我有以下文件:Windows中的长路径错误?
C:\Users\Jan\Documents\Visual Studio 2010\Projects\AzureTests\Build\82df3c44-0482-47a7-a5d8-9b39a79cf359.cskpg\WebRole1_778722b2-eb95-476d-af6a-917f269a0814.cssx\39e5cb39-cd18-4e1a-9c25-72bd1ad41b49.csman
我可以通过记事本打开的窗口中打开此文件罚款++,或者通过浏览。但是,通过运行窗口打开不起作用。它给出了'无法找到文件'对话框。当我查询文件系统在C#中有:
var dir = new DirectoryInfo(@"C:\Users\Jan\...")
var fil = dir.GetFiles("*.csman")[0];
的文件也在返回的文件列表中,但我不能做:
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(fil.FullName);
因为这将失败,并“在不正确的数据(1,1)'错误。因为XmlDocument
认为该文件是空的。但是,该文件上的File.ReadAllBytes
成功。这工作:
var buf = File.ReadAllBytes(fil.FullName);
using (var ms = new MemoryStream())
{
ms.Write(buf, 0, (int) buf.Length);
ms.Seek(0, SeekOrigin.Begin);
xmlDoc.Load(ms);
}
调用时,不会发生问题......
xmlDoc.Save(fil.FullName);
有人能解释这里发生了什么?
204个字符远远没有任何限制。再想一想。 – 2011-12-23 10:44:00
使用xmlDoc.Load – 2011-12-23 10:44:05
Windows中的许多API具有260个字符的限制,但是204个字符的数量低于此值,所以这不是问题的原因。 – CodesInChaos 2011-12-23 10:44:14