簡體   English   中英

Visual C#2013 StreamWriter行為異常

[英]Visual C# 2013 StreamWriter acting erratically

我一直在Visual Studio 2013中從事一個小項目,並且在寫入文本文件時遇到了最奇怪的問題。 這是我的代碼:

private void btnSave_Click(object sender, EventArgs e) {
        File.Create(fileName).Close(); //Create/Overwrite file and close it.

        using (Stream stream = File.Open(fileName, FileMode.Open)) { //Opens the file and creates a Stream, closes the file once finished.
            StreamWriter file = new StreamWriter(stream);

            file.WriteLine("teststart");
            for (int i = 0; i < CHECK_BOX_COUNT; i++) {
                //file.WriteLine("test" + i);
                if (checkBoxes[i].Checked) 
                    file.WriteLine("t");
                else
                    file.WriteLine("f");
            }
            file.WriteLine("testend");
        }
    }

當我使用前面的代碼運行該程序時,該文本文件絕對為空,但應該寫入。 但是,有趣的是,如果我從文件file.WriteLine(“ test” + i)之前刪除//,那么它將寫入文件而不會出現問題。 任何幫助表示贊賞!

我不確定為什么它不起作用-希望其他人對此有所了解。 我的直覺是與打開/關閉文件,然后創建新的流,然后是基於該流的StreamWriter的方式有關。

一個潛在的問題是您不會處置您的StreamWriter對象,而僅處置基礎流。 StreamWriter也應丟棄。

這是我剛剛測試過的修改版本,對我有用:

using (StreamWriter file = new StreamWriter(fileName, false))
        { //Opens the file and creates a Stream, closes the file once finished.

            file.WriteLine("teststart");
            for (int i = 0; i < checkBoxes.Count; i++)
            {
                //file.WriteLine("test" + i);
                if (checkBoxes[i].Checked)
                    file.WriteLine("t");
                else
                    file.WriteLine("f");
            }
            file.WriteLine("testend");
        }

編輯:我只是重新測試了您的原始代碼,並確認了我的懷疑。 如果您在處置流所基於的流之前就對其進行處置(只需將其粘貼在using語句中),則一切將正常運行。

暫無
暫無

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

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