基本文本文件正在创建,但没有写入
我是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
{
}
当你调用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。
这工作!谢谢,我衷心感谢。我注意到我得到了这个例外,并且会跟进,但是你触及了它。 – 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");
删除try/catch语句,也许你会看到这个问题,而不是 – Steve
捕,加赶上(例外){Console.WriteLine(ex.Message); }来查看问题。把消息放在这里寻求更多帮助。目前还不清楚你的代码中的“MyGameResult”是什么 – Media