我有几种方法,每种方法都将操作应用于文本文件,其中下一个操作需要上一个操作的结果作为输入:
private TextReader input = new StreamReader("input.txt");
private TextWriter output = new StreamWriter("output.txt");
MemoryStream result_1 = new MemoryStream();
MemoryStream result_2 = new MemoryStream();
Operation_1(input, ref result_1);
Operation_2(result_1, ref result_2);
Operation_3(result_2, output);
Operation_1 的代码:
private void Operation_1(TextReader input, ref MemoryStream output)
{
TextWriter outputWriter = new StreamWriter(output);
String line;
while (input.Peek() >= 0) //while not end of file
{
line = input.ReadLine();
//perform operation on line
outputWriter.writeline(line);
}
input.Close();
}
operation_2 的代码:
private void Operation_2(TextReader input, ref MemoryStream output)
{
input.Seek(0, SeekOrigin.Begin); //reset stream to start of file
TextReader inputReader = new StreamReader(input);
TextWriter outputWriter = new StreamWriter(output);
String line;
while (inputReader.Peek() >= 0) //while not end of file
{
line = inputReader.ReadLine();
//perform operation on line
outputWriter.writeline(line);
}
inputReader.Close();
}
operation_3 的代码:
private void operation_3(MemoryStream input, TextWriter output)
{
input.Seek(0, SeekOrigin.Begin); //reset stream to start of file
TextReader inputReader = new StreamReader(input);
String line;
while (inputReader.Peek() >= 0) //while not end of file
{
line = inputReader.ReadLine();
//perform operation on line
output.writeline(line);
}
inputReader.Close();
output.Close();
}
现在的问题是,我得到的结果与将每个中间结果存储到硬盘上的物理 txt 文件并使用该文件进行下一个操作不同。几行,文件的结尾丢失了。
此外,这似乎不是一种非常干净和通用的方式。
所以我的问题是;为什么将 MemoryStream 用于中间结果时我的结果会有所不同,是否有更清洁、更灵活的方法?(如果可以选择是否要保存中间结果,我想努力解决)。