2014-07-12 87 views
0

我有一个TextReader对象。 现在,我想将TextReader的整个内容流式传输到一个文件。我无法使用ReadToEnd()并将所有内容全部写入文件,因为内容可能很大。 有人可以给我一个样本/小费如何在块中做到这一点?将TextReader流式传输到文件

谢谢。

+2

只是在循环使用的ReadLine(),直到它返回*空*。 –

回答

2
using (var textReader = File.OpenText("input.txt")) 
using (var writer = File.CreateText("output.txt")) 
{ 
    do 
    { 
     string line = textReader.ReadLine(); 
     writer.WriteLine(line); 
    } while (!textReader.EndOfStream); 
} 
+0

我认为在这里do-while循环会更好 –

+0

您的代码无效。您不应该在'do'之前读取一行,并且读取和写入的顺序是混合的 –

1

就是这样。循环阅读器,直到它返回null并完成您的工作。一旦完成,关闭它。

String line; 

try 
{ 
    line = txtrdr.ReadLine();  //call ReadLine on reader to read each line 
    while (line != null)   //loop through the reader and do the write 
    { 
    Console.WriteLine(line); 
    line = txtrdr.ReadLine(); 
    } 
} 

catch(Exception e) 
{ 
    // Do whatever needed 
} 


finally 
{ 
    if(txtrdr != null) 
    txtrdr.Close(); //close once done 
} 
0

使用TextReader.ReadLine

// assuming stream is your TextReader 
using (stream) 
using (StreamWriter sw = File.CreateText(@"FileLocation")) 
{ 
    while (!stream.EndOfStream) 
    { 
     var line = stream.ReadLine(); 
     sw.WriteLine(line); 
    } 
} 
相关问题