如何解决如果 readalltext 找不到文件,请创建文件
我正在使用 c# 在 Visual Studio 中编写应用程序。我想检查 readalltext 是否正确找到了文件,如果没有,则需要创建文件并在其中放置一个零。在伪代码中:
if(x=File.ReadAllText("file.txt")==NULL)
{
File.WriteallText("file.txt","0");
x=File.ReadAllText("file.txt");
}
我该怎么做?在此先感谢,我尝试了一些谷歌,但我可能输入了错误的关键字
解决方法
您可以使用 File.Exists()
方法检查文件是否存在。
string path = "file.txt";
if (!File.Exists(path))
{
File.WriteAllText(path,"0");
}
,
使用 File.Exist()
的问题是存在在检查后创建或删除文件的风险。风险可能很小,但可能仍然需要处理。处理此问题的一种方法是在循环中使用 try/catch:
while (true)
{
try
{
if (!File.Exists(path))
{
File.WriteAllText(path,"0");
return "0";
}
else
{
return File.ReadAllText(path);
}
}
catch (IOException)
{
// try again
}
}
另一种方法是跳过 ReadAllText
而是打开一个文件流。如果成功,您就知道您拥有对该文件的独占访问权限,可以读取或写入该文件:
try
{
using var fs = File.Open(path,FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None);
if (fs.Length == 0)
{
using var sw = new StreamWriter(fs);
sw.Write('0');
return "0";
}
else
{
using var sr = new StreamReader(fs);
return sr.ReadToEnd();
}
}
catch (Exception)
{
// Handle the various types of exception that may occur.
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。