2009-10-21 170 views
0

我正在尝试使用StreamWriter保存LINQ XML文档。使用以下代码可以在文档很小(磁盘上大约6kb)时正常工作,但在文件较大时(磁盘上大约66kb)不起作用。如果我用绝对路径替换相对路径,它在两种情况下都可以正常工作。是否有任何理由说明为什么相对路径会失败并显示更大的文件?StreamWriter与相对路径不一致吗?

注:我没有得到任何异常,但没有创建文件/写入,除非我使用绝对路径(与大数据集 - 小数据集工作正常使用相对路径)

XDocument xMap = new XDocument(...); 

// Works for small file but not large 
using (StreamWriter writer = new StreamWriter("map.xml", false, new UTF8Encoding(false))) { 
    xMap.Save(writer); 
} 

// Works consistently 
using (StreamWriter writer = new StreamWriter(@"c:\data\map.xml", false, new UTF8Encoding(false))) { 
    xMap.Save(writer); 
} 
+0

你有什么异常? – SLaks 2009-10-21 01:42:53

+0

你可能在错误的目录中;看我的编辑。 – SLaks 2009-10-21 02:29:37

回答

3

有没有理由使用相对路径会导致大文件失败。

你确定相对路径最终成为你认为的地方吗?如果相对路径在网络上,或者它的驱动器已满,那可以解释它。

你有什么异常?


编辑:当前目录可能改变某些原因。当它失败时检查Environment.CurrentDirectory的值,并确保它是您的想法。

+0

我没有得到任何异常,它无声无息地失败。如果我保存的数据仅包含少量元素,则会保存并且我可以看到该文件出现在文件夹中。如果我通过从更大的源加载来增加数据集,然后再次单击保存,则不会引发异常,但目录中不会出现任何文件。 – jeffora 2009-10-21 01:46:43

+0

谢谢,那是问题所在。我认为CurrentDirectory应该保持为可执行文件运行的目录? – jeffora 2009-10-21 02:33:31

+0

否;当前目录可以更改。例如,文件对话框可以设置当前目录。 – SLaks 2009-10-21 11:23:44