.NET DiscUtils — Википедия

.NET DiscUtils
Разработчик Kenneth Bell
Написана на C#
Операционная система Microsoft Windows
Языки интерфейса Английский
Аппаратная платформа .NET
Последняя версия 0.10 (17 декабря 2011)
Репозиторий hg.codeplex.com/discutils
Лицензия MIT
Сайт discutils.codeplex.com

.NET DiscUtils — open source-библиотека .NET Framework для доступа и работы с образами виртуальных дисков. Библиотека полностью написанная на C#, и доступна на сайте Microsoft CodePlex.

Поддерживаемые форматы

[править | править код]

.NET DiscUtils поддерживает несколько форматов образов дисков, схем выделения разделов и файловых систем Windows.

Форматы дисковых образов

[править | править код]

Схем выделения разделов

[править | править код]

Файловые системы

[править | править код]

В файловых системах FAT и FAT32 отсутствует поддержка длинных имён файлов.

Создание ISO образа

[править | править код]
CDBuilder builder = new CDBuilder(); builder.UseJoliet = true; builder.VolumeIdentifier = "A_SAMPLE_DISK"; builder.AddFile(@"Folder\Hello.txt", Encoding.ASCII.GetBytes("Hello World!")); builder.Build(@"C:\temp\sample.iso"); 

Распаковка файлов ISO образа

[править | править код]
using (FileStream isoStream = File.Open(@"C:\temp\sample.iso")) {   CDReader cd = new CDReader(isoStream, true);   Stream fileStream = cd.OpenFile(@"Folder\Hello.txt", FileMode.Open);   // Используйте fileStream... } 

Создание виртуального диска

[править | править код]
long diskSize = 30 * 1024 * 1024; // 30 MB using (Stream vhdStream = File.Create(@"C:\TEMP\mydisk.vhd")) {     Disk disk = Disk.InitializeDynamic(vhdStream, diskSize);     BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsFat);     using (FatFileSystem fs = FatFileSystem.FormatPartition(disk, 0, null))     {         fs.CreateDirectory(@"TestDir\CHILD");         // Остальные действия с файловой системой...     } } 

Данный пример создает виртуальный VHD-диск с динамическим расширением. Нижеследующий пример создаст диск с фиксированным размером.

long diskSize = 30 * 1024 * 1024; // 30 MB using (Stream vhdStream = File.Create(@"C:\TEMP\mydisk.vhd")) {     Disk disk = Disk.InitializeFixed(vhdStream, diskSize);     BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsFat);     using (FatFileSystem fs = FatFileSystem.FormatPartition(disk, 0, null))     {         fs.CreateDirectory(@"TestDir\CHILD");         // Остальные действия с файловой системой...     } } 

Создание флоппи-диска

[править | править код]
using (FileStream fs = File.Create(@"myfloppy.vfd")) {     using (FatFileSystem floppy = FatFileSystem.FormatFloppy(fs, FloppyDiskType.HighDensity, "MY FLOPPY  "))     {         using (Stream s = floppy.OpenFile("foo.txt", FileMode.Create))         {             // Используйте поток stream...         }     } }