时间:2025-01-06 09:41
人气:
作者:admin
最近在项目中遇到一个需求,需要实现光盘刻录功能,由于项目使用的是C#语言,网上查阅了很多资劳和伪代码,很多都不能跑通,很多都是是引入了DLL后找不到方法,猜测应该是不同的版本导致的,经过一天的资料查阅和编写调试,终于是调通了全部的功能,这里将关键的伪代码分享如下。代码中有注释,对照着看就可以。
第一步,生成IOS镜像格式的文件,用于刻录。注意,这里制作ISO文件用到了DiscUtils库,直接通过NuGet搜素DiscUtils,这里不需要添加全部的DiscUtils,只需要添加引用DiscUtils.Iso9660即可。
/// <summary>
/// 生成ISO格式的文件
/// </summary>
/// <param name="sourceDirectory"></param>
/// <param name="isoFilePath"></param>
public static void GenerateIsoFromDirectory(string sourceFilePath, string isoFilePath)
{
// 创建一个内存流,用于存储ISO文件
using (MemoryStream isoStream = new MemoryStream())
{
DiscUtils.Iso9660.CDBuilder builder = new CDBuilder();
builder.UseJoliet = true;
builder.VolumeIdentifier = "A_SAMPLE_DISK";
builder.AddFile("DicomImage.dcm", sourceFilePath);
//这里如果需要添加多个文件,可以传入一个文件全路径的列表,使用循环来处理,可以制作成多文件夹模式,伪代码如下
//假设List<string> sourceFilePathList 是一个文件全路径的文件列表,这里采用文件的上一级目录作为文件夹目录创建
//foreach (var sourceFilePath in sourceFilePathList)
//{
// //向上拿一级
// FileInfo file = new FileInfo(sourceFilePath);
// string sourceLastDectory = Directory.GetParent(sourceFilePath).Name;
// string isoFileName = sourceLastDectory + "\\" + file.Name;
// builder.AddFile(isoFileName, sourceFilePath);
/