我必须将数据表保存到磁盘。它只是一个列,我已经循环保存每一行,我尝试将行添加到字符串然后保存。
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标签放在任何地方。
答案 0 :(得分:1)
不要为每一行重新打开文件。要么继续写入同一个流,要么只使用File
辅助方法之一({3}}一次性写入所有内容:
File.WriteAllLines(@"c:\filename.txt",
dt.Rows.OfType<DataRow>().Select(r => r.Item("word"));