C# 4.0 如何使用C从DVD/CD中读取文件#

C# 4.0 如何使用C从DVD/CD中读取文件#,c#-4.0,c#-3.0,C# 4.0,C# 3.0,我想从可移动磁盘(CD/DVD)读取文件。 使用下面的代码,我能够找到驱动器 ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive"); foreach (ManagementObject mo in mos.Get()) { var Name=mo["Caption"].ToString(); var Drive=mo["Drive"].ToString();

我想从可移动磁盘(CD/DVD)读取文件。 使用下面的代码,我能够找到驱动器

ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM    Win32_DiskDrive");

foreach (ManagementObject mo in mos.Get())
{
var Name=mo["Caption"].ToString();
var Drive=mo["Drive"].ToString();
var Id=mo["Id"].ToString();
}  
现在我想从DVD中读取文件。。。。 任何帮助都将不胜感激。。
提前谢谢

我不完全确定你说的“从DVD读取文件”是什么意思,但你可以使用以下方法获取每个CD/DVD驱动器上的所有文件

static IEnumerable<string> getDirectoryFilePaths(string path)
{
    List<string> filePaths = new List<string>();

    try
    {
        // recursively look through all of the folders
        foreach (var dir in Directory.GetDirectories(path, "*"))
        {
            filePaths.AddRange(getDirectoryFilePaths(dir));
        }
    }
    catch (UnauthorizedAccessException)
    {
        // skip this stuff
    }

    // add the files directly in the current drive/folder
    filePaths.AddRange(Directory.GetFiles(path, "*").ToList());

    return filePaths;
}

static void Main(string[] args)
{
    // Get all of the ready CD drives
    foreach (var cdDrive in DriveInfo.GetDrives().Where(d => d.DriveType == DriveType.CDRom && d.IsReady))
    {
        // Start at the drive and get all of the files recursively
        IEnumerable<string> driveFiles = getDirectoryFilePaths(cdDrive.Name);

        foreach (var file in driveFiles)
        {
            // do something with the files...
            using (FileStream fs = File.OpenRead(file))
            {
                //...
            }
        }
    }
}
静态IEnumerable GetDirectoryFilePath(字符串路径)
{
列表文件路径=新列表();
尝试
{
//递归地浏览所有文件夹
foreach(Directory.GetDirectories(路径“*”)中的var dir)
{
AddRange(getDirectoryFilePath(dir));
}
}
捕获(未经授权的访问例外)
{
//跳过这些
}
//直接在当前驱动器/文件夹中添加文件
filepath.AddRange(Directory.GetFiles(path,“*”).ToList());
返回文件路径;
}
静态void Main(字符串[]参数)
{
//准备好所有准备好的CD驱动器
foreach(DriveInfo.GetDrives()中的var cdDrive,其中(d=>d.DriveType==DriveType.CDRom&&d.IsReady))
{
//从驱动器开始,递归地获取所有文件
IEnumerable driveFiles=GetDirectoryFilePath(cdDrive.Name);
foreach(driveFiles中的var文件)
{
//对文件做点什么。。。
使用(FileStream fs=File.OpenRead(File))
{
//...
}
}
}
}

显然,您可以更改代码以获取特定的驱动器,而不是查看所有可用的驱动器,但希望这能让您继续。

从CD或DVD读取文件与从硬盘读取文件没有什么不同。