我该如何打开一个FileStream,读取文件内容,然后在不重新打开文件的情况下写入(追加)到文件中?
在这种情况下,StreamReader/StreamWriter存在一个问题,即它们假设拥有底层流。由于目标是.NET 4,因此"leaveOpen"构造函数重载无法使用。(我不介意使用StreamReader/StreamWriter,但它们提供了ReadLine和WriteLine操作。)
总之,与问题相关的有问题的代码示例以及应用程序将如何访问和管理FileStream的生命周期(只需打开一次):
在这种情况下,StreamReader/StreamWriter存在一个问题,即它们假设拥有底层流。由于目标是.NET 4,因此"leaveOpen"构造函数重载无法使用。(我不介意使用StreamReader/StreamWriter,但它们提供了ReadLine和WriteLine操作。)
总之,与问题相关的有问题的代码示例以及应用程序将如何访问和管理FileStream的生命周期(只需打开一次):
var fs = File.Open(..);
using (var reader = new StreamReader(fs)) {
// Do all reading here, then ditch the reader
} // .. but StreamReader will Close the FileStream
SeekToEnd(fs);
using (var writer = new StreamWriter(fs)) {
// Do all writing here, then ditch the writer
// .. ideal, but FileStream already Closed
}
// Finally, somewhere else:
fs.Close();
我找到的“相关”的MSDN文章总是将其分为两个步骤:这个问题是关于在不打开文件两次的情况下以行为单位执行文本的读取-写入操作。
文件被打开为
File.Open(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite)
底层流始终可随意定位和写入。
using
(这是一个本地操作,写入将发生多次,直到父项被处理)。 - user2864740