如果 readalltext 找不到它,则创建该文件

Create the file if readalltext can't find it

我正在 visual studio 使用 c# 编写应用程序。我想检查 readalltext 是否正确找到文件,如果没有,则需要创建文件并在其中放入零。在伪代码中:

  if(x=File.ReadAllText("file.txt")==NULL)
  {
    File.WriteAllText("file.txt", "0");
    x=File.ReadAllText("file.txt");
  }

我该怎么做?在此先感谢,我尝试了一些 google 但我可能输入了错误的关键字

您可以使用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.
        }