我想同时读取和写入一个文件。这不起作用。
static void Main(string[] args) { StreamReader sr = new StreamReader(@"C:\words.txt"); StreamWriter sw = new StreamWriter(@"C:\words.txt"); }
如何同时读取和写入 C # 中的文件?
您需要一个同时为读写打开的单个流。
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");