c#检查驱动程序的文件类型,然后再检查操作
本文关键字:然后 再检查 操作 类型 文件 检查 驱动程序 | 更新日期: 2023-09-27 18:10:30
所以基本上我正在制作一个应用程序,将同步文件类型是不同的方式,我想搜索整个逻辑驱动器,例如所有文本文件的C:'
。如何一旦我找到所有的文本文件,我想应用一个动作,例如移动所有的文本文件到一个位置或电子邮件所有的文本文件到用户的电子邮件。
我从过去的Stack overflow post
中找到了这段代码 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;
}
但是我想知道的是当我找到文件时我该怎么做?
您发布的代码看起来应该用strings
表示具有.txt
扩展名的文件名称填充List<string> files
。
它应该像迭代从函数返回的值一样简单,并按照您的意愿处理它们。
这段代码应该(未经测试)检查目标目录,如果不存在则创建它,然后将从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);
}
您将对该函数返回的字符串列表执行foreach操作。
我不太确定我是否正确理解了你。如果你只是想知道如何处理你的文件列表,你可以这样做:
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);
}
将filelist中的所有文件复制到c:'tmp,并覆盖相同文件名的文件。