.NET Core - 对一个文本文件进行多次 read/write 操作

.NET Core - Multiple read/write operations on a text file

多个read/write操作访问单个文件,而写操作时我面临这个问题

The process cannot access the file because it is being used in another process

使用它向文件添加文本

using (StreamWriter writer=System.IO.File.AppendText("wwwroot/Files/file.txt"))
      {
           writer.WriteLine(stringData.ToString());
           writer.Close();
      }

有没有办法对一个文件执行多次read/write?

谢谢

试试下面的代码。您可能不需要为此使用 StreamWriter

        // To append text to file
        System.IO.File.AppendAllText("FilePath", "TextToWrite");

        // To read all text from file
        string textFromFile = System.IO.File.ReadAllText("FilePath");

如果使用来自多个线程或写入同一文件的应用程序的相同代码,您可能会发现当一个线程正在连接时它发现该文件已在使用中。 错误消息的唯一原因是文件未关闭。

如果写入文件的调用是来自同一个应用程序的连续调用,则文件未正确关闭。

处理此问题的一种方法是检查锁定的文件并稍后重试。 像这样的东西可以用来检查文件是否打开:

public static bool CanBeOpenedForExclusiveRead(string filename)
        {
            try
            {
                // Test file for exclusive read/write
                using (System.IO.FileStream fileStream = System.IO.File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.None))
                {
                    fileStream.Close();
                }
                return true;
            }
            catch
            {
            }

            return false;
        }

如果你已经在使用像 NLog 这样的东西,那就是使用 nlog 来“记录”写入文件,nlog 将更好地跨线程处理这些问题。