Как добавить файл в существующий ISO-образ с помощью C# и сохранить обновленный ISO?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить файл в существующий ISO-образ с помощью C# и сохранить обновленный ISO?

Сообщение Anonymous »

Я работаю над проектом, в котором мне нужно открыть существующий файл ISO, добавить в него определенный файл (например, файл XML), а затем сохранить обновленный образ ISO. Я использую библиотеку DiscUtils для чтения и записи файлов ISO, но сталкиваюсь с проблемами при попытке изменить содержимое ISO.
Вот что я хочу сделать:
Вот что я хочу сделать: p>
Выберите существующий файл ISO.
Загрузите XML-файл по URL-адресу (для которого у меня уже есть метод).
Добавьте загруженный XML-файл в ISO.Сохраните обновленный ISO в новый файл.
Я хочу сохранить существующее содержимое ISO при добавлении нового файла.
Что я пробовал:
Я использовал библиотеку DiscUtils, чтобы открыть существующий файл ISO, добавил новый файл XML в ISO, а затем сохранил обновленный ISO в новый файл. Ниже приведен код, который я использовал:

Код: Выделить всё

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using DiscUtils.Iso9660;

public async Task UpdateIsoWithXmlAsync(string isoFilePath, string xmlFilePath, string outputIsoPath)
{
using (FileStream isoStream = File.OpenRead(isoFilePath))
using (FileStream outputIsoStream = File.Create(outputIsoPath))
{
CDBuilder builder = new CDBuilder();
builder.UseJoliet = true;
builder.UseRockRidge = true;

// Read the existing ISO content
using (CDReader cdReader = new CDReader(isoStream, true))
{
foreach (string filePath in cdReader.GetFiles("/"))
{
string relativePath = filePath.TrimStart('/');
using (Stream fileStream = cdReader.OpenFile(filePath, FileMode.Open, FileAccess.Read))
{
builder.AddFile(relativePath, fileStream);
}
}
}

// Add the new XML file
builder.AddFile("file.xml", xmlFilePath);

// Build the updated ISO
builder.Build(outputIsoStream);
}
}

Что я ожидал:
Я ожидал, что обновленный ISO будет содержать все исходные файлы из выбранного ISO, включая добавленный XML-файл. Размер нового ISO должен быть близок к исходному размеру, при этом новый XML-файл будет добавлен в соответствующее место.
Что произошло на самом деле:
Полученный ISO намного меньше ожидаемого (около 3,81 МБ), и исходное содержимое, похоже, не скопировано правильно. Вместо изменения исходного ISO создается впечатление, что был создан новый ISO, содержащий только XML-файл. Кроме того, размер ISO значительно уменьшен.


Подробнее здесь: https://stackoverflow.com/questions/791 ... updated-is
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»