FileStream fsMyfile = new FileStream("myfile.txt", FileMode.Create, FileAccess.ReadWrite); StreamWriter swMyfile = new StreamWriter(fsMyfile);
swMyfile.WriteLine("Hello,World");
swMyfile.WriteLine("asdfasfasfasdfasdfasdfasdf");
swMyfile.WriteLine("ADFASFASDFASDFASFASFASDFASDF");
swMyfile.WriteLine("1232432534563456");
swMyfile.Flush(); //以文本方式读文件
StreamReader srMyfile = new StreamReader(fsMyfile);
srMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
Console.WriteLine("****************以文本方式读文件*******************");
string s1;
while ((s1 = srMyfile.ReadLine()) != null)
{
Console.WriteLine(s1);
}
Console.WriteLine(); //以二进制方式读文件
BinaryReader brMyfile = new BinaryReader(fsMyfile);
brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
Console.WriteLine("****************以二进制方式读文件*****************");
Byte b1;
while (brMyfile.PeekChar() > -1)
{
b1 = brMyfile.ReadByte();
if (b1 != 13 && b1 != 10)
{
Console.Write("{0}", b1.ToString());
Console.Write(".");
}
else
{
Console.WriteLine();
}
}
Console.WriteLine("\n"); //释放对象空间
brMyfile.Close();
srMyfile.Close();
swMyfile.Close();
fsMyfile.Close();上面的代码在运行到swMyfile.Close();就会抛出异常“所指向的对象已经释放”,而将swMyfile.Close();提到brMyfile.Close();前面就好了,是不是与前面的swMyfile.Flush();有关,请哪位高手解释一下这四个对象释放的顺序?
swMyfile.WriteLine("Hello,World");
swMyfile.WriteLine("asdfasfasfasdfasdfasdfasdf");
swMyfile.WriteLine("ADFASFASDFASDFASFASFASDFASDF");
swMyfile.WriteLine("1232432534563456");
swMyfile.Flush(); //以文本方式读文件
StreamReader srMyfile = new StreamReader(fsMyfile);
srMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
Console.WriteLine("****************以文本方式读文件*******************");
string s1;
while ((s1 = srMyfile.ReadLine()) != null)
{
Console.WriteLine(s1);
}
Console.WriteLine(); //以二进制方式读文件
BinaryReader brMyfile = new BinaryReader(fsMyfile);
brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
Console.WriteLine("****************以二进制方式读文件*****************");
Byte b1;
while (brMyfile.PeekChar() > -1)
{
b1 = brMyfile.ReadByte();
if (b1 != 13 && b1 != 10)
{
Console.Write("{0}", b1.ToString());
Console.Write(".");
}
else
{
Console.WriteLine();
}
}
Console.WriteLine("\n"); //释放对象空间
brMyfile.Close();
srMyfile.Close();
swMyfile.Close();
fsMyfile.Close();上面的代码在运行到swMyfile.Close();就会抛出异常“所指向的对象已经释放”,而将swMyfile.Close();提到brMyfile.Close();前面就好了,是不是与前面的swMyfile.Flush();有关,请哪位高手解释一下这四个对象释放的顺序?
using FileStream fsMyfile = new FileStream("myfile.txt", FileMode.Create, FileAccess.ReadWrite)
{
...
}