如何在 C # 中读写文件

我想同时读取和写入一个文件。这不起作用。

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

如何同时读取和写入 C # 中的文件?

168040 次浏览

您需要一个同时为读写打开的单个流。

FileStream fileStream = new FileStream(
@"c:\words.txt", FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.None);
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 打开文件。读写标志。然后,您可以使用初始 FileStream 创建您需要的任何 Stream/String/Binary Reader/Writers。

别忘了最简单的方法:

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

这个帖子似乎回答了你的问题: 同时读写文件

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

您可以尝试这样做: “ Filename.txt”文件将在每次运行这段代码时自动在 bin-> debug 文件夹中创建,或者您可以指定文件的路径,如@“ C:/...”。您可以通过转到 bin —— > debug 文件夹来检查“ Hello”的存在性

不要忘记添加控制台。 Readline ()在这段代码片段 else 之后将不会出现控制台。

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

改进代码@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");