2009-10-21 2 views
0

Я пытаюсь сохранить XML-документ LINQ с помощью StreamWriter. Использование следующего кода отлично работает, когда документ небольшой (~ 6kb на диске), но не работает, когда файл больше (~ 66kb на диске). Если я заменил относительный путь абсолютным путем, он отлично работает в обеих ситуациях. Есть ли причина, по которой относительный путь должен завершиться неудачей с большим файлом?Работает ли StreamWriter непоследовательно с относительными путями?

NB: Я не получаю никаких исключений, но файл не создается/записывается, если я использую абсолютный путь (с большим набором данных - меньше набор данных прекрасно работает с относительным путем)

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

+0

Возможно, вы находитесь в неправильном каталоге; см. мое редактирование. – SLaks

ответ

3

Eсть нет причины, что использование относительного пути приведет к сбою для больших файлов.

Вы уверены, что относительный путь оказался таким, какой вы думаете? Если относительный путь находится в сети или если его диск заполнен, это может объяснить его.

Какое исключение вы получаете?


EDIT: текущий каталог, вероятно, изменилось по какой-то причине. Проверьте значение Environment.CurrentDirectory, когда он не работает, и убедитесь, что это так, как вы думаете.

+0

Я не получаю никакого исключения, он терпит неудачу. Если данные, которые я сохраняю, содержат только небольшое количество элементов, они сохраняются, и я вижу, что файл отображается в папке. Если я затем увеличу набор данных, загрузив из более крупного источника, а затем снова нажмите «Сохранить», исключение не будет выбрано, но в каталоге не появится файл. – jeffora

+0

Спасибо, в этом была проблема. Я думал, что CurrentDirectory должен оставаться в качестве каталога, из которого запускается исполняемый файл? – jeffora

+0

Нет; текущий каталог может измениться. Например, диалоговые окна файлов могут устанавливать текущий каталог. – SLaks

Смежные вопросы