Я создаю текстовый файл на лету на основе данных, собранных в DataTable
.Создание файла .txt из DataTable
В моем текущем (тестовом) наборе данных имеется 773 строки, которые я хочу разделить запятой (,) для каждого столбца и разбить каждую строку на отдельной строке. Вот моя попытка;
string FileName = "TEST_" + System.DateTime.Now.ToString("ddMMyyhhmm") + ".txt";
StreamWriter sw = File.CreateText(@"PATH...." + FileName);
foreach (DataRow row in Product.Rows)
{
bool firstCol = true;
foreach (DataColumn col in Product.Columns)
{
if (!firstCol) sw.Write(",");
sw.Write(row[col].ToString());
firstCol = false;
}
sw.WriteLine();
}
Выходной файл представляет собой текстовый файл, как и ожидалось. Мгновенно появляется большая часть данных, но текстовый файл никогда полностью не отображает 773 строки. Я пробовал это несколько раз, количество строк может варьироваться от 720 строк до 750 строк вплоть до частичного завершения строки 773, но оно никогда не заканчивается.
Я не вмешивался и не прекращал приложение в любое время.
Любые идеи?
Вы пробовали обернуть «StreamWriter» в блок «using»? - Это приведет к сбросу буфера в базовый поток. - Повторите попытку 'sw.Flush()' после цикла foreach. – ebb
@ebb Использование sw.Flush() сделал трюк, не могли бы вы ответить на него и, возможно, объяснить, почему, я с радостью соглашусь. Благодарю. – William
@ Clev231 по этой причине, прочитайте: http://stackoverflow.com/questions/2417978/what-is-the-difference-between-streamwriter-flush-and-streamwriter-close –