簡體   English   中英

StreamWriter似乎沒有執行任何操作?

[英]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.Flush方法()

清除當前寫入器的所有緩沖區,並使所有緩沖的數據寫入基礎流。

FileStream.Flush方法()

清除此流的緩沖區,並使所有緩沖的數據寫入文件。

StreamWriter.Close方法()

關閉當前的StreamWriter對象和基礎流。 您必須調用Close以確保所有數據都正確地寫到基礎流中。 在調用Close之后,StreamWriter上的任何操作都可能引發異常。 如果磁盤上沒有足夠的空間,則調用Close將引發異常。

使用聲明

提供方便的語法,以確保正確使用IDisposable對象。

楓樹

using (StreamWriter writer = new StreamWriter("important.txt"))
{
    writer.Write("Word ");
    writer.WriteLine("word 2");
    writer.WriteLine("Line");
}

更新資料

哦,直到關閉流,它才“保存”嗎?

由這些參數打開的StreamWriterFileStream支持,除非已自動刷新或刷新它,否則它將不會保存。 這將在您關閉時發生,而關閉將在您處置時發生。 經驗法則(如果是一次性的),請始終使用using語句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM