C#检查驱动程序的文件类型,然后执行操作

时间:2014-06-26 18:55:53

标签: c# file visual-c#-express-2010

所以基本上我正在制作一个同步文件类型的应用程序是不同的方式,我想搜索整个逻辑驱动器例如C:\所有文本文件。我曾经找到所有文本文件我想应用一个操作,例如将所有文本文件移动到一个位置或将所有文本文件通过电子邮件发送到用户电子邮件。

我从过去的Stack overflow帖子中找到了此代码

 public List<string> Search()
{
    var files = new List<string>();
    foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady))
    {
        try
        {
            files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, "*.txt", SearchOption.AllDirectories));
        }
        catch(Exception e)
        {
            Logger.Log(e.Message); // Log it and move on
        }
    }

    return files;
}

但我想知道的是,当我找到文件时,我该如何做某事?

3 个答案:

答案 0 :(得分:3)

您发布的代码看起来应该填充List<string> filesstrings代表具有.txt扩展名的文件的名称。

它应该像迭代函数返回的值一样简单,并随心所欲地执行。

此代码应该(未经测试)检查目标目录,如果它不存在则创建它,然后将从Search()返回的每个文件复制到目标路径。

List<string> results = Search();

String targetPath = "C:/TargetDirectory/";
if (!System.IO.Directory.Exists(targetPath))
    System.IO.Directory.CreateDirectory(targetPath);

foreach (string aFileStr in results)
{
    String sourceFile = aFileStr;
    String destFile = Path.Combine(targetPath, Path.GetFileName(aFileStr));
    System.IO.File.Copy(sourceFile, destFile, true);
}

答案 1 :(得分:0)

你会在该函数返回的字符串列表上做一个foreach。

答案 2 :(得分:0)

我不太确定我是否理解正确。如果您只想知道如何处理文件列表,可以执行以下操作:

var filelist = Search();
foreach (var s in filelist) {
     string fn = System.IO.Path.GetFileName(s);
     string dest = System.IO.Path.Combine("c:\\tmp", fn);
     System.IO.File.Copy(s, dest, true);
}

将文件列表中的所有文件复制到c:\ tmp并覆盖文件名相同的文件。