2014-10-19 3 views
0

Я использую следующий код для записи DataTable в текстовый файл.StreamWriter.WriteLine не пишет в новой строке

Using sbData As New StreamWriter(fileName, False, Encoding.UTF32) 
    sbData.Write(String.Join("\t", dataTable.Columns.Cast(Of DataColumn)().Select(Function(arg) arg.ColumnName.Trim()))) 
    sbData.WriteLine() 
    For Each dataRow As DataRow In dataTable.Rows 
     sbData.Write(String.Join("\t", dataRow.ItemArray.Select(Function(arg) arg.ToString().Trim()))) 
     sbData.WriteLine() 
    Next 
    sbData.Flush() 
    sbData.Close() 
End Using 

Данные записываются в текстовый файл, но ни \ t (tab) не работает, ни WriteLine. Вместо вклада я получаю «\ t» в текстовом файле, и все в продолжении. Кто-нибудь знает, что здесь не так?

ответ

0

Проблема решена: Для вкладки я использовал ControlChars.Tab, и он отлично работает. Для WriteLine Я предполагаю, что это как-то связано с кодированием. Я переключился с UTF32 на Unicode и начал работать.

будет пытаться найти то, что именно была проблема, но сейчас проблема решена :-)

2

"\t" работает только в фигурных языках скрепляющих, как C#, вы должны использовать vbTab в VB.NET.

Использование utf32 просто странно и причина, по которой WriteLine() не работает. Независимо от того, какую программу вы используете для просмотра файла, она не ожидает этого и будет предполагать неправильную кодировку. Также причина, по которой вы видели пробел в «\ t». Написание спецификации не является обязательным при использовании необычных кодировок. Учтите, что настоятельно рекомендуется использовать Encoding.UTF8, по умолчанию для StreamWriter.

+0

Привет, спасибо за ваш ответ. Я использую Notepad для чтения txt-файлов. Также мое приложение выводит некоторые шведские и немецкие символы. Я не знаю, доступны ли они в UTF8. Могу ли я также рассказать об этом. Еще раз спасибо ... –

+0

UTF8 кодирует Юникод, он знает шведский и немецкий. Передайте 'New Encoding.UTF8 (True)', чтобы гарантировать, что Notepad всегда будет правильно. –

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