Быстрое сохранение данных одного столбца на диск

Мне нужно сохранить данные на диск. Это всего лишь один столбец, и я зацикливался на сохранении каждой строки, и я пытался добавить строки в строку, а затем сохранить ее.

 For i = 0 To dt.Rows.Count - 1
 fd.savefile("c:\filename.txt, " " & dt.Rows(i).Item("word"), "append")   'appends to file
 'or
 wordList = wordList & " " & dt.Rows(i).Item("word")  'builds up the word list and..
 Next
 '
 fd.saveFile("c:\filename.txt", "overwrite") 'then saves it to disk.

Это очень медленно.

Я нашел это:

http://bytes.com/topic/c-sharp/answers/250808-storing-datatable-data-hard-disk

FileStream fs = new FileStream(@"C:\test.bin", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, dt);
fs.Close();

Это очень быстро выводит сериализованную версию данных. Гораздо быстрее, чем мои циклические процессы. Как я могу сбросить данные, но без метаданных? Его не нужно считывать обратно в таблицу данных. Метод сериализации везде помещает тэги etc.


person bendecko    schedule 24.03.2014    source источник


Ответы (1)


Не открывать файл повторно для каждой строки. Либо продолжайте писать в тот же поток, либо просто записывайте все сразу с помощью одного из File вспомогательных методов, таких как File.WriteAllLines:

File.WriteAllLines(@"c:\filename.txt", 
    dt.Rows.OfType<DataRow>().Select(r => r.Item("word"));
person Alexei Levenkov    schedule 24.03.2014
comment
Это круто. Но он помещает возврат каретки между каждой строкой в ​​выходном файле. Могу ли я как-то этого избежать? - person bendecko; 24.03.2014
comment
@bendecko конечно - посмотрите других помощников File или напишите StreamWriter любым удобным для вас способом. - person Alexei Levenkov; 24.03.2014
comment
Понятно.. Понятно.. Просто привыкаю ко всему этому. Спасибо! - person bendecko; 24.03.2014