直接看看源代码的错误地方吧。

 

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.IO; 
  6.  
  7. namespace FileStreamTest 
  8.     class Program 
  9.     { 
  10.         static void Main(string[] args) 
  11.         { 
  12.             String file = @"D:\temp.txt"
  13.             FileStream fileStream; 
  14.  
  15.             if (File.Exists(file)) 
  16.             { 
  17.                 fileStream = File.OpenRead(file); 
  18.             } 
  19.             else 
  20.             { 
  21.                 fileStream = File.Create(file); 
  22.             } 
  23.  
  24.             //这里对StreamWriter使用using,会导致在这个域结束之后,对fileStream的流关闭 
  25.             using (StreamWriter writer=new StreamWriter(fileStream)) 
  26.             { 
  27.                 writer.WriteLine("test some plain text!"); 
  28.             } 
  29.  
  30.             //这里再传入fileStream的文件流已经被关闭,所以会在运行时报错 
  31.             using (StreamReader reader=new StreamReader(fileStream)) 
  32.             { 
  33.                 Console.WriteLine(reader.ReadLine()); 
  34.             } 
  35.  
  36.             fileStream.Close(); 
  37.             fileStream.Dispose(); 
  38.         } 
  39.     } 

解决办法就是要重复使用流的时候,不要用using块,或者在给StreamWriter, StreamReader构造的时候传文件名,而不是之前的FileStream。