[英]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.