[英]C# check driver for file types followed by action
因此,基本上我正在制作一个将文件类型同步的应用程序,这是通过不同的方式进行的,我想在整个逻辑驱动器(例如C:\\
搜索所有文本文件,但是一旦找到所有文本文件,我都想应用例如,将所有文本文件移动到一个位置或将所有文本文件通过电子邮件发送给用户电子邮件。
我从过去的堆栈溢出帖子中找到了此代码
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;
}
但是我想知道的是,找到文件后我该怎么做?
你的代码贴看起来应该填写List<string> files
与strings
表示有文件名.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);
}
您将在该函数返回的字符串列表上进行一次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);
}
这会将文件列表中的所有文件复制到c:\\ tmp并覆盖文件名相同的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.