微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果 readalltext 找不到文件,请创建文件

如何解决如果 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 举报,一经查实,本站将立刻删除。