快速将单列数据表保存到磁盘

时间:2014-03-24 16:15:45

标签: c# .net performance datatable disk

我必须将数据表保存到磁盘。它只是一个列,我已经循环保存每一行,我尝试将行添加到字符串然后保存。

 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();

在超快的时间内打破了数据的序列化版本。比我的循环过程快得多。我怎样才能像那样转储数据表,但没有元数据?它不需要被读回数据表中。 serialize方法将etc标签放在任何地方。

1 个答案:

答案 0 :(得分:1)

不要为每一行重新打开文件。要么继续写入同一个流,要么只使用File辅助方法之一({3}}一次性写入所有内容:

File.WriteAllLines(@"c:\filename.txt", 
    dt.Rows.OfType<DataRow>().Select(r => r.Item("word"));