如何在C#中读写文件

66 c# file-io filestream

我想要读取和写入文件.这不起作用.

static void Main(string[] args)
{
    StreamReader sr = new StreamReader(@"C:\words.txt");
    StreamWriter sw = new StreamWriter(@"C:\words.txt");
}
Run Code Online (Sandbox Code Playgroud)

我如何在C#中读取和写入文件?

Mik*_*keW 77

您需要一个单独的流,为读取和写入打开.

FileStream fileStream = new FileStream(
      @"c:\words.txt", FileMode.OpenOrCreate, 
      FileAccess.ReadWrite, FileShare.None);
Run Code Online (Sandbox Code Playgroud)

  • FileShare.ReadWrite不是必需的,并且很可能是不可接受的,它允许其他应用程序在您使用它时读取和写入您的文件.通常,FileShare.None在写入文件时是首选,以防止其他人在您处理文件时访问该文件. (10认同)
  • 省略最后一个`)` (2认同)

小智 66

不要忘记简单的路线:

    static void Main(string[] args)
    {
        var text = File.ReadAllText(@"C:\words.txt");
        File.WriteAllText(@"C:\words.txt", text + "DERP");
    }
Run Code Online (Sandbox Code Playgroud)

  • @Copperpot:检查问题的要求.没有说锁定.此外,它没有说出任何关于硬盘崩溃或流星撞击中断的事情. (14认同)
  • @JohnAtwood你知道他们对假设的看法.他从来没有选择正确的答案,所以我们永远不会*真的*知道. (4认同)

Sco*_*ttS 34

var fs = File.Open("file.name", FileMode.OpenOrCreate, FileAccess.ReadWrite);
var sw = new StreamWriter(fs);
var sr = new StreamReader(fs);

...

fs.Close();
//or sw.Close();
Run Code Online (Sandbox Code Playgroud)

关键是用FileAccess.ReadWrite标志打开文件.然后,您可以使用初始FileStream创建所需的任何Stream/String/Binary Reader/Writers.