如何在C#中读写文件

时间:2009-03-03 09:22:09

标签: c# file-io filestream

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

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

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

6 个答案:

答案 0 :(得分:72)

您需要一个单独的流,为阅读和写作打开。

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

答案 1 :(得分:63)

不要忘记简单的路线:

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

答案 2 :(得分:33)

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();

关键是使用FileAccess.ReadWrite标志打开文件。然后,您可以使用初始FileStream创建所需的任何流/字符串/二进制读取器/写入器。

答案 3 :(得分:2)

此主题似乎回答了您的问题:simultaneous-read-write-a-file

基本上,你需要的是声明两个FileStream,一个用于读操作,另一个用于写操作。 Writer Filestream需要以“附加”模式打开您的文件。

答案 4 :(得分:0)

您可以尝试以下操作:每次运行此代码时,都会在bin-> debug文件夹中自动创建“ Filename.txt”文件,或者您可以指定文件路径,例如:@“ C:/ ...”。您可以通过进入bin-> debug文件夹

来检查“ Hello”的存在性

P.S不要忘记在此代码段之后添加Console.Readline(),否则不会显示控制台。

TextWriter tw = new StreamWriter("filename.txt");
        String text = "Hello";
        tw.WriteLine(text);
        tw.Close();

        TextReader tr = new StreamReader("filename.txt");
        Console.WriteLine(tr.ReadLine());
        tr.Close();

答案 5 :(得分:0)

使用@Ipsita制作了改进代码-用于异步读/写文件I / O

readonly string logPath = @"FilePath";
...
public async Task WriteToLogAsync(string dataToWrite)
{
    TextReader tr = new StreamReader(logPath);
    string data = await tr.ReadLineAsync();
    tr.Close();

    TextWriter tw = new StreamWriter(logPath);
    await tw.WriteLineAsync(data + dataToWrite);
    tw.Close();
}
...
await WriteToLogAsync("Write this to file");