2009-10-21 35 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