【发布时间】:2012-08-30 19:35:23
【问题描述】:
我正在尝试使用 C# 中的各种文件函数,例如 File.GetLastWriteTime,复制命令放置在大于 Windows 7 上允许的最大路径(即 260)的路径上的文件上。它给了我一个关于长路径名的错误。在 MSDN 支持上,他们要求在路径前使用 \\?\。我做了同样的事情,但仍然出现同样的错误,似乎没有任何改变。下面是我的代码。如果我使用正确或需要添加任何内容,请告诉我:
我作为代码使用的所有这些库还有其他东西:
以下是相应的代码:
filesToBeCopied = Directory.GetFiles(path,"*",SearchOption.AllDirectories);
for (int j = 0; j < filesToBeCopied.Length; j++)
{
try
{
String filepath = @"\\?\" + filesToBeCopied[j];
File.GetLastWriteTime(filepath);
}
catch (Exception ex)
{
MessageBox.Show("Error Inside the single file iteration for the path:" +
filesToBeCopied[j] + " . The exception is :" + ex.Message);
}
}
其中路径是 Windows 机器上以驱动器号开头的文件夹的路径。例如:d:\abc\bcd\cd\cdc\dc\..........
【问题讨论】:
-
导致错误的路径是什么样的?可以贴在这里吗?
-
这里是路径:
D:\abcdefghi_abc\abcdefghis abcd abcdef company1\abcdefghis abcd abcdef company\project abcde\Do Not Delete - EP120605003\002 Image prep\Societe Generale (Open Access) - Returned 18 May 2012 (UL 30 May)\004 OCR\001 Ocr Working\003 Partition Files\4F33DBE75836ACFA95BE3B14B7BEFE5E.split -
.Net 不支持长路径,您必须直接使用 P/Invoke 调用 API 或缩短路径。 blogs.msdn.com/b/bclteam/archive/2007/02/13/…
-
Yux,请将其发布为答案,以便我们为您投票!
-
该链接描述了 WIN32 原生 api 的行为,.Net 自己进行验证
标签: c#