簡體   English   中英

如何在 C# 中使用 StreamWriter WriteLine 逐行覆蓋文本文件

[英]How do I overwrite a text file line by line using StreamWriter WriteLine in c#

作為我的 c# 學習的一部分,我在控制台應用程序上有一個簡單的游戲。 我現在添加了一個文本文件來記錄最高分。 它有 4 行,日期,嘗試次數,以分鍾為單位的時間和以秒為單位的額外時間。 文本文件是項目解決方案的一部分,雖然我沒有指定完整路徑,但我可以使用 StreamReader 讀取文件並毫無問題地輸出行。 但是,如果我有一個新的最高分,並且我希望覆蓋文本文件中的值,則什么也不會發生。 文本文件保持不變。

我試過使用 StreamWriter。 使用 StreamReader ReadLine 將數據帶入應用程序並使用 StreamReader WriteLine 輸出,感覺有些直觀。 但是輸出部分不起作用。 對於我的罪過,這是我的代碼。 在 stackooerflow 上有一些類似的查詢,但我沒有找到似乎適合我的查詢的解決方案。

if (newBestScore== true)
{
    DateTime dateToday = DateTime.Now;
    string dateString=dateToday.ToShortDateString();
    string currAttempts=CurrentAttempts.ToString();
    using (StreamWriter newTopScore = new StreamWriter("TopScore.txt"))
    {
        newTopScore.WriteLine(dateString);
        newTopScore.WriteLine(currAttempts);
        newTopScore.WriteLine(timeTaken.Minutes);
        newTopScore.WriteLine(timeTaken.Seconds);
        newTopScore.Close();
    }
}

我不會解決你的問題,但我會告訴你將來如何自己解決所有此類問題。

下載Process Monitor並為您的應用程序添加過濾器,如下所示:

Process Namecontains<myapp>.exe然后Include然后按 Add 按鈕添加這個過濾器。

進程監控

然后開始記錄並查找TopScore.txt並查看它在哪個目錄中查找該文件。 您可以為此使用查找對話框( Ctrl + F ):

查找進程監視器的對話框

然后查看該文件的完整文件名,這樣您就知道它被寫在哪里了。 您甚至可以右鍵單擊並選擇“跳轉到...”。

了解什么是工作目錄。 如果您沒有提供完整路徑,該文件將寫入工作目錄。

為什么要走這條路? 這種方式證明你獨立有問題。 您不更改源代碼。 每當您更改源代碼並添加診斷代碼時,例如Console.WriteLine(Path.GetFullPath(...)); ,問題可能會消失。

暫無
暫無

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

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