using DiscUtils;
using DiscUtils.Common;
using DiscUtils.Iso9660;
public void PopulateUSBDrive(string isoSource, string volumeName) {
using (FileStream isoStream = File.Open(@isoSource, FileMode.Open)) {
CDReader iso = new CDReader(isoStream, true);
CopyDirectoryTree(iso.Root, ref iso, volumeName);
isoStream.Close();
}
}
/// <summary>
/// Copies all files and folders from iso
/// </summary>
/// <param name="rootDir">Points to the current DiscDirectoryInfo that is the root of file copy operations</param>
/// <param name="iso">The CDReader object that represents the iso we are copying from</param>
/// <param name="destinationVolumeName">The volume name of the USB partion we are copying the iso to</param>
/// <returns></returns>
private List<DiscDirectoryInfo> CopyDirectoryTree(DiscDirectoryInfo rootDir, ref CDReader iso, string destinationVolumeName) {
UsbDisk installDisk = usbDisks.Where(x => x.Volume == destinationVolumeName).FirstOrDefault<UsbDisk>();
string installPartitionDriveLetter = installDisk != null ? installDisk.DiskLetter : String.Empty;
if (!String.IsNullOrEmpty(installPartitionDriveLetter)) {
string directory = installPartitionDriveLetter + "\\" + rootDir.FullName;
if (!Directory.Exists(directory)) Directory.CreateDirectory(directory);
foreach (var file in rootDir.GetFiles()) {
Stream fileStream = iso.OpenFile(file.FullName, FileMode.Open, FileAccess.Read);
using (FileStream output = new FileStream(installPartitionDriveLetter + (file.FullName.Contains(';') ? file.FullName.Split(';')[0] : file.FullName), FileMode.Create)) {
fileStream.CopyTo(output);
}
}
foreach (DiscDirectoryInfo subdir in rootDir.GetDirectories()) {
CopyDirectoryTree(subdir, ref iso, destinationVolumeName);
}
}
return rootDir.GetDirectories().ToList<DiscDirectoryInfo>();
}
The .NET Framework is not specific to any one programming language; rather, it includes a library of functions that allows developers to rapidly build applications. Several supported languages include C#, VB.NET, C++ or ASP.NET.
TRUSTED BY
ASKER