[英]StreamWriter doesn't seem to be doing anything?
我有一個讀取CSV並替換其值的程序。
我使用相同的文件,它讀取文件,提取數據,填充數據表,然后重建數據以將其重新寫入CSV,沒有問題,但是當我檢查CSV時,它為空。
我使用相同的文件還是創建一個新文件都沒關系,它們全都為空。
這是我的寫方法:
void RewriteCSV(DataTable table)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*";
sfd.FilterIndex = 1;
sfd.RestoreDirectory = true;
// If no File is selected, the program ends.
if (sfd.ShowDialog() != DialogResult.OK)
{
return;
}
StreamWriter writer = new StreamWriter(sfd.FileName);
string line = "";
foreach (DataColumn col in table.Columns)
{
line += col.ColumnName + ",";
}
writer.WriteLine(line.TrimEnd(','));
foreach (DataRow row in table.Rows)
{
line = "";
foreach (string s in row.ItemArray)
{
line += s + ",";
}
writer.WriteLine(line.TrimEnd(','));
}
}
同樣,該程序在數據或文件方面沒有任何問題,只是不寫入文件。
您需要關閉文件並確保將其刷新到磁盤
最簡單的方法是將其包裝在使用語句中
using (StreamWriter writer = new StreamWriter(sfd.FileName))
{
//do stuff here
...
...
} // this closes and flushes the file to disk
一些額外的閱讀
清除當前寫入器的所有緩沖區,並使所有緩沖的數據寫入基礎流。
清除此流的緩沖區,並使所有緩沖的數據寫入文件。
關閉當前的StreamWriter對象和基礎流。 您必須調用Close以確保所有數據都正確地寫到基礎流中。 在調用Close之后,StreamWriter上的任何操作都可能引發異常。 如果磁盤上沒有足夠的空間,則調用Close將引發異常。
提供方便的語法,以確保正確使用IDisposable對象。
楓樹
using (StreamWriter writer = new StreamWriter("important.txt"))
{
writer.Write("Word ");
writer.WriteLine("word 2");
writer.WriteLine("Line");
}
更新資料
哦,直到關閉流,它才“保存”嗎?
由這些參數打開的StreamWriter
由FileStream
支持,除非已自動刷新或刷新它,否則它將不會保存。 這將在您關閉時發生,而關閉將在您處置時發生。 經驗法則(如果是一次性的),請始終使用using
語句
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.