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

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

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

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

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

Примеры

Создание 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...
        }
    }
}

Ссылки

  • Официальный сайт .NET DiscUtils  (англ.)
  • Статья CodeProject о .NET DiscUtils Архивная копия от 5 июня 2011 на Wayback Machine  (англ.)
Яндекс.Метрика