2012-02-14 5 views
1

Что случилось со следующим утверждением?Ошибка пути XmlTextWriter?

XmlTextWriter writer = new XmlTextWriter(@"D:\project\data\" + System.DateTime.Today + @"\" + System.DateTime.Now + ".xml", null); 

Когда я пытаюсь выше заявление он дает следующее сообщение об ошибке

формат данного пути не поддерживается.

Описание: Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.NotSupportedException: формат данного пути не поддерживается.

ответ

3

недопустимые символы в стороне, то, что вы пытаетесь сделать, невозможно по одной простой причине: до тех пор, пока XmlTextWriterбудет создать файл, если он не существует, он не создаст каталог. И это то, что вы пытаетесь сделать:

XmlTextWriter writer = new XmlTextWriter(
    /* your root path */ @"D:\project\data\" + 
    /* NEW directory */ System.DateTime.Today + @"\" + 
    /* new file name */ System.DateTime.Now + ".xml", null); 

Вы либо должны создать каталоги для данного дня вручную:

var path = string.Format(@"D:\project\data\{0:yyyyMMdd}", DateTime.Now); 
// if directory already exists nothing will happen 
Directory.CreateDirectory(path); 

Или объединить дату в имя файла:

var fileName = string.Format(@"D:\project\data\{0:yyyyMMdd}_{0:HHmmssfff}.xml", 
    DateTime.Now); 
2

Имена файлов не могут содержать различные символы, : является одним из незаконных символов. Попробуйте использовать что-то вроде этого, вместо:

String.Format(@"D:\project\data\{0:yyyyMMdd}\{0:HHmmssfff}.xml", DateTime.Now); 
+0

но когда Я пытаюсь использовать 'doc.Load (@" D: \ project \ data.xml ");' он не дает никакой ошибки, а 'doc' является типом' 'XmlDocument''. –

+1

Хе-хе, простите, я должен был быть более конкретным. Двоеточие разрешено только в пути к файлу сразу после буквы диска, а не в именах папок или файлов. –

1

В зависимости от языковых настроек (локали), дата и время формат может содержать недопустимые символы для имени файла. Например, немецкий формат времени содержит двоеточие ':', а в форматах даты на английском языке есть '/', оба из которых не разрешены в именах файлов или каталогов.

Выясните, какие недопустимые символы генерируются вашей местности, и либо использовать явный формат DateTime.ToString(), или удалить их, применяя метод ToString() Заменить («:», «»). И т.д.

+0

, то как мне это сделать? моя системная локаль установлена ​​на US –

+0

сейчас, когда я преобразовал дату и время в строку, это дает эту ошибку 'Не удалось найти часть пути 'D: \ project \ data \ 14022012 \ 161428.xml'.' –