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