我想对我的 USB 驱动器上的一些文件、目录和子目录进行精确复制,I:/
并希望它们在其中C:/backup
(例如)
我的 USB 驱动器具有以下结构:
(只是要知道,这是一个例子,我的驱动器有更多的文件,目录和子目录)
课程/data_structures/db.sql
游戏/pc/pc-game.exe
考试/exam01.doc
好吧,我不确定如何开始,但我的第一个想法是让所有这些都files
这样做:
string[] files = Directory.GetFiles("I:");
下一步可能是创建一个循环并使用File.Copy
指定目标路径:
string destinationPath = @"C:/backup";
foreach (string file in files)
{
File.Copy(file, destinationPath + "\\" + Path.GetFileName(file), true);
}
此时一切正常,但不是我想要的,因为这不会复制文件夹结构。还有一些错误发生如下......
- 第一个发生是因为我的 PC 配置显示每个文件夹的隐藏文件,而我的 USB 有一个
AUTORUN.INF
不再隐藏的隐藏文件,循环尝试复制它,并在此过程中生成此异常:
拒绝访问路径“AUTORUN.INF”。
- 当某些路径太长时会发生第二种情况,这会产生以下异常:
指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。
所以,我不确定如何实现这一点并验证每个可能的错误情况。我想知道是否有另一种方法可以做到这一点以及如何(可能是某个库)或更简单的方法,例如具有以下结构的已实现方法:
File.CopyDrive(driveLetter, destinationFolder)
(VB.NET 的答案也将被接受)。
提前致谢。