直接看看源代码的错误地方吧。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- namespace FileStreamTest
- {
- class Program
- {
- static void Main(string[] args)
- {
- String file = @"D:\temp.txt";
- FileStream fileStream;
- if (File.Exists(file))
- {
- fileStream = File.OpenRead(file);
- }
- else
- {
- fileStream = File.Create(file);
- }
- //这里对StreamWriter使用using,会导致在这个域结束之后,对fileStream的流关闭
- using (StreamWriter writer=new StreamWriter(fileStream))
- {
- writer.WriteLine("test some plain text!");
- }
- //这里再传入fileStream的文件流已经被关闭,所以会在运行时报错
- using (StreamReader reader=new StreamReader(fileStream))
- {
- Console.WriteLine(reader.ReadLine());
- }
- fileStream.Close();
- fileStream.Dispose();
- }
- }
- }
解决办法就是要重复使用流的时候,不要用using块,或者在给StreamWriter, StreamReader构造的时候传文件名,而不是之前的FileStream。