基本文本文件正在创建,但没有写入

问题描述:

我是C#的初学者,并且正在开发一些练习工具,无论如何,我可以使用StreamWriter将它写入项目的Bin文件夹中的txt文件, File.CreateText,但是当我尝试添加一个路径并追加它时,我得到一个文件但没有写入它。基本文本文件正在创建,但没有写入

我只是用WinFormApp

try 
{ 
    string mypath = @"C:\Temp\Rocket League Tracker.txt"; 

    StreamWriter RocketLeagueTrackerFile; 

    RocketLeagueTrackerFile = File.CreateText(mypath); 
    RocketLeagueTrackerFile.WriteLine("Rocket League Tracking"); 

    File.AppendAllText(mypath, MyGameResult + Environment.NewLine); 

    RocketLeagueTrackerFile.Close(); 
} 
catch 
{ 
} 
+0

删除try/catch语句,也许你会看到这个问题,而不是 – Steve

+0

捕,加赶上(例外){Console.WriteLine(ex.Message); }来查看问题。把消息放在这里寻求更多帮助。目前还不清楚你的代码中的“MyGameResult”是什么 – Media

当你调用File.CreateText你正在获得在该文件上的锁。
以下调用File.AppendAllText不使用从File.CreateText返回的StreamWriter,但它再次尝试获取对同一文件的锁定。
这会导致异常(IOException),但由于您添加了空的try/catch,因此无法看到它。

不要无缘无故地使用空的try/catch,因为您隐藏了特殊情况,并且程序可能会在用户桌面没有解释的情况下崩溃。
或者你在寻找一个神秘错误并且需要打电话给SO(像这里)那样放松时间。

如果你真的需要显示一条消息,您的用户则

..... 
catch(Exception ex) 
{ 
    MessageBox.Show("Unexpected Error:" + ex.Message); 
    // Rethrow the exception to upper layers.... 
    throw; 
} 

说,你不要因为根据MSDN File.AppendAllText

打开一个需要File.CreateText文件,将指定的字符串附加到该文件,然后 关闭该文件。如果该文件不存在,则此方法创建一个 文件,将指定的字符串写入文件,然后关闭该文件。

string mypath = @"C:\Temp\Rocket League Tracker.txt"; 
string title = "Rocket League Tracking"; 
File.AppendAllText(mypath, title + Environment.NewLine + 
          MyGameResult + Environment.NewLine); 

或者,如果你需要始终覆盖与该名以前的文件替换File.AppendAllText与File.WriteAllText。

+0

这工作!谢谢,我衷心感谢。我注意到我得到了这个例外,并且会跟进,但是你触及了它。 – PTK

你应该使用语句此使用。 File.CreateText是锁定文件。

using(RocketLeagueTrackerFile = File.CreateText(mypath)) 
{    
    RocketLeagueTrackerFile.WriteLine("Rocket League Tracking"); 
} 

File.AppendAllText(mypath, MyGameResult + Environment.NewLine); 

您还可以使用:

File.WriteAllText(mypath ,"Rocket League Tracking");