using System;
using System.IO;class MyStream
{
    private const string FILE_NAME = "Test6.data";    public static void Main()
    {
        if (File.Exists(FILE_NAME))
        {
            Console.WriteLine("{0} already exists",FILE_NAME);
            return;
        
        }        FileStream file = new FileStream(FILE_NAME,FileMode.CreateNew);
        //为数据创建writer
        BinaryWriter w = new BinaryWriter(file);        for (int i = 0; i < 11; i++)
        {            w.Write((int)i);
        
        }
        w.Close();
        file.Close();        file = new FileStream(FILE_NAME,FileMode.Open,FileAccess.Read);        BinaryReader r = new BinaryReader(file);        for (int i = 0; i < 11; i++)
        {            Console.WriteLine(r.ReadInt32());
            w.Close();
           
        }
            }
}
w对象在前面已经关闭了,为什么在后面还要关闭,而且要关闭12次!另外为什么BinaryReader对象r和FileStream对象file又不用关闭了。

解决方案 »

  1.   

    额,就是不明白呀。看着书上是这么写的,关键是还运行正常,在循环里头把w.close改成r.close,反而有错。求助大虾了
      

  2.   

    在循环中的w.Close()可以不用写吧,上面的已经把写入流关闭,后面和w没关系了....
    因为机器没有vs,所以没有验证,个人愚见。
      

  3.   

    额,谢谢,我觉得你说的是对的,应该是书本写错了,虽然可以正常执行但是文件和binaryReader并没有关闭。
      

  4.   

    上面的代码运行是没问题,w.close()在前面已经关了,后面就不起什么作用了.到是一般来说会在循环读取数据完后把读入流r关闭.书上偶尔有一两个错误不用管他,自己知道怎么回事就好了.