Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2013, 19:06   #1
alexelev
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 26
Вопрос создание и работа с файлами ISO

Озаботился вопросом о программном способе создания ISO образов из проекта на C#. Каким образом лучше реализовать подобный трюк? Есть библиотека DiskUtils, но она сторонняя ,кто-то когда-то пользовался ей или есть еще какие-то способы?
UPD.
Попытался использовать библиотеку .NET DiscUtils и столкнулся с проблемой построения собственно iso-образа. Согласно документации к библиотеке, построение файла-образа производится так:

Цитата:
How to create a new 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");
You can add files as byte arrays (shown above), as files from the Windows filesystem, or as a Stream. By using a different form of Build, you can get a Stream to the ISO file, rather than writing it to the Windows filesystem.
Мой код:

Код:
    //обработка сообщения о подключении флешки
    private void onDriveArrived(object sender, DriveDetectorEventArgs e)
    {
    	DriveInfo dri = new DriveInfo(e.Drive);
        if ((dri.DriveType & DriveType.Removable) != DriveType.Removable)
            return;
    
        
    
    try
            {
    	//создаю объект под будущий iso
                CDBuilder builder = new CDBuilder();
    	//определяю рут-директорию флешки
                DirectoryInfo dir = new DirectoryInfo(e.Drive);
    
    	//подключаю флаг Joliet-он в стандарте ISO9660 позволяет поддерживать
    	//имена файлов более 8 символов
                builder.UseJoliet = true;
    	//прописываю метку диска - смонтированного в виртуальное устройство iso-образа
                builder.VolumeIdentifier = "TEST";
    
    	//получаю имена с путями всех файлов на флешке
                List<string> names = GetFilesPathToISO(e.Drive);
                foreach (string name in names)
    	//каждый файл из списка добавляю в будущий iso
                    builder.AddFile(name, name);
    
    	//создается iso-файл
                builder.Build(@"d:\test.iso");
    
            }
            catch (Exception err) 
                {MessageBox.Show(err.Message + "\n" + err.StackTrace);}
    
        }  
    }
Запускаю, вставляю флешку с данными, начинает создаваться образ, доходит до определенного момента выкидывает исключение типа "недостаточно места на диске" (хотя места на диске предостаточно) и прерывает работу. В созданном файле-образе при открытии его архиватором находятся какие-то бессодержательные файлы - скрин

И что делать - не знаю, да и спросить собственно не у кого...
alexelev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal Создание и работа с типизированными файлами(тип запись) Dina 85 Помощь студентам 19 19.03.2013 22:35
Создание и работа с файлами на языке С Elena741 Помощь студентам 0 09.03.2013 14:39
создание iso образа уже устоновленной ос :=) Операционные системы общие вопросы 4 30.10.2012 22:49
Делфи(изучение компонент);паскаль(создание и использование модулей);си++(1.масивы и символьные строки;2.работа с файлами) Back2012 Помощь студентам 4 06.06.2012 22:36
Работа с форматом ISO Lier Общие вопросы Delphi 5 13.05.2012 20:13