【发布时间】:2012-09-13 00:35:50
【问题描述】:
我想对我的 USB 驱动器 I:/ 上的一些文件、目录和子目录进行精确复制,并希望它们位于 C:/backup 中(例如)
我的 U 盘结构如下:
(只是要知道,这是一个例子,我的驱动器有更多的文件、目录和子目录)
courses/data_structures/db.sql
games/pc/pc-game.exe
exams/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 的答案也将被接受)。
提前致谢。
【问题讨论】: