我想要读取和写入文件。这不起作用。
static void Main(string[] args)
{
StreamReader sr = new StreamReader(@"C:\words.txt");
StreamWriter sw = new StreamWriter(@"C:\words.txt");
}
我如何在C#中读取和写入文件?
答案 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");