Uma*_*air 7 .net c# managementeventwatcher
我有这个代码将所有文件从source-directory复制F:\到目标目录.
public void Copy(string sourceDir, string targetDir)
{
//Exception occurs at this line.
string[] files = System.IO.Directory.GetFiles(sourceDir, "*.jpg",
SearchOption.AllDirectories);
foreach (string srcPath in files)
{
File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), true);
}
}
Run Code Online (Sandbox Code Playgroud)
并获得例外.
如果我省略SearchOption.AllDirectories并且它可以工作但只复制文件F:\
使用以下函数代替 System.IO.Directory.GetFiles:
IEnumerable<String> GetAllFiles(string path, string searchPattern)
{
return System.IO.Directory.EnumerateFiles(path, searchPattern).Union(
System.IO.Directory.EnumerateDirectories(path).SelectMany(d =>
{
try
{
return GetAllFiles(d,searchPattern);
}
catch (UnauthorizedAccessException e)
{
return Enumerable.Empty<String>();
}
}));
}
Run Code Online (Sandbox Code Playgroud)
该文件夹是一个安全的系统文件夹(您的垃圾箱,每个驱动器都有自己的垃圾箱)。只需将 file.copy 放入 try catch 语句中并忽略/记录所有失败。这样您将只复制实际文件并跳过系统文件/文件夹。
如果你确实想避免使用 try catch 语句。使用 fileinfo 和目录信息类来确定哪些文件夹/文件属于系统并将抛出异常。
| 归档时间: |
|
| 查看次数: |
7392 次 |
| 最近记录: |