C# 跳过GetFiles()中的系统文件/目录
我使用这种方法将所有图像从USB复制到硬盘,比如说C# 跳过GetFiles()中的系统文件/目录,c#,visual-studio-2010,C#,Visual Studio 2010,我使用这种方法将所有图像从USB复制到硬盘,比如说C:\,但它会引发无法访问系统文件/目录的异常 如果跳过SearchOption.AllDirectories参数,效果很好,但我的主要目的是从USB及其子目录复制所有图像 如何跳过系统文件/目录?类似的内容可能会有所帮助:(未测试) 它的可能副本将不起作用,因为异常是在目录.GetFiles上引发的,而不是在文件.Copy上引发的。这里是工作啊。有点跛脚,因为像这样简单的事情而被困在trys里。谢谢你的信息! public void Copy
C:\
,但它会引发无法访问系统文件/目录的异常
如果跳过SearchOption.AllDirectories
参数,效果很好,但我的主要目的是从USB及其子目录复制所有图像
如何跳过系统文件/目录?类似的内容可能会有所帮助:(未测试)
它的可能副本将不起作用,因为异常是在目录.GetFiles
上引发的,而不是在文件.Copy
上引发的。这里是工作啊。有点跛脚,因为像这样简单的事情而被困在trys里。谢谢你的信息!
public void Copy(string sourceDir, string targetDir)
{
try
{
var files = System.IO.Directory.GetFiles(sourceDir, "*.jpg",
SearchOption.AllDirectories);
foreach (string srcPath in files)
{
File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), true);
}
}
catch (System.UnauthorizedAccessException)
{
}
}
foreach (string srcPath in files)
{
FileAttributes attributes = File.GetAttributes(srcPath);
bool isSystem = ((attributes & FileAttributes.System) == FileAttributes.System);
bool isDirectory = ((attributes & FileAttributes.Directory) == FileAttributes.Directory);
if (!isSystem && !isDirectory)
{
File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), true);
}
}