C# 读取后无法写入文件
在以下代码中,我得到错误“流不可写”: 错误发生在此行C# 读取后无法写入文件,c#,file-io,C#,File Io,在以下代码中,我得到错误“流不可写”: 错误发生在此行StreamWriter w=newstreamwriter(fs) 这是为什么?您必须重新打开该文件,因为读取操作会将其关闭: FileStream fs = new FileStream("C:\\test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite,
StreamWriter w=newstreamwriter(fs)代码>
这是为什么?您必须重新打开该文件,因为读取操作会将其关闭:
FileStream fs = new FileStream("C:\\test.txt",
FileMode.OpenOrCreate,
FileAccess.ReadWrite,
FileShare.ReadWrite);
using (StreamReader r = new StreamReader(fs))
{
string t = r.ReadLine();
r.Close();
Console.WriteLine(t);
}
fs = new FileStream("C:\\test.txt",
FileMode.OpenOrCreate,
FileAccess.ReadWrite,
FileShare.ReadWrite);
using (StreamWriter w = new StreamWriter(fs))
{
w.WriteLine("string");
w.Flush();
w.Close();
}
fs.Close();
来自msdn
关闭StreamReader对象和底层流,并释放与该读卡器关联的所有系统资源。
因此,您尝试写入的流无效。您需要重新打开流并重新打开文件。不要关闭第一个StreamWriter
,它将关闭底层流。
使用奥斯卡建议的语句
using (FileStream fs = new FileStream("C:\\temp\\fFile.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
{
StreamReader r = new StreamReader(fs);
string t = r.ReadLine();
Console.WriteLine(t);
StreamWriter w = new StreamWriter(fs);
w.WriteLine("string");
w.Close();
r.Close();
fs.Close();
}
你看了之后就有问题了。close()方法关闭底层流。不关闭StreamReader。只需对下面的行进行注释,就可以了
r.Close();
r.Close();
r.Close();