C#关于FileStream文件流被关闭的问题
classtest{privatestaticFileStreamfs;//这个文件流作为全局变量privatestaticvoidExample1(){fs=newFi...
class test
{
private static FileStream fs; //这个文件流作为全局变量
private static void Example1()
{
fs = new FileStream("文件路径", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
BinaryWriter bw = new BinaryWriter(fs);
try
{
bw.Write("示例文本1");
}
catch{}
finally
{
bw.Close();
bw.Dispose();
}
}
private static void Example2()
{
try
{
bw.Write("示例文本2");
}
catch{}
finally
{
bw.Close();
bw.Dispose();
}
}
}
以上是代码,然后先调用函数Example1(),再调用函数Example2()时,就发生错误了,发现这时的fs文件流已经被关闭了,那么是什么原因呢?而且如果使用BinaryReader来读取fs时,fs不会被关闭,是因为BinaryWriter把文件流关闭的吗?求懂得高手解答~~~谢谢~~~ 展开
{
private static FileStream fs; //这个文件流作为全局变量
private static void Example1()
{
fs = new FileStream("文件路径", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
BinaryWriter bw = new BinaryWriter(fs);
try
{
bw.Write("示例文本1");
}
catch{}
finally
{
bw.Close();
bw.Dispose();
}
}
private static void Example2()
{
try
{
bw.Write("示例文本2");
}
catch{}
finally
{
bw.Close();
bw.Dispose();
}
}
}
以上是代码,然后先调用函数Example1(),再调用函数Example2()时,就发生错误了,发现这时的fs文件流已经被关闭了,那么是什么原因呢?而且如果使用BinaryReader来读取fs时,fs不会被关闭,是因为BinaryWriter把文件流关闭的吗?求懂得高手解答~~~谢谢~~~ 展开
展开全部
你的bw对象作用范围只在Example1中有效,在Example2中当然不会起作用了
更多追问追答
追问
哦,我写问题的时候写错了,忘记在Example2中定义bw了,但是fs被关闭的问题还是存在
追答
你可以用StreamWriter试下
class test{private static StreamReader sr; //读取
private StreadmWriter sw; //写入private static void Example1(){
sw = StreamWriter("文件名", true, System.Text.UnicodeEncoding.GetEncoding("gb2312")) try { sw.WriteLine("示例文本1"); } catch{} finally { }}private static void Example2(){ try { sw.WriteLine("示例文本2"); } catch{} finally { bw.Close(); bw.Dispose(); }}}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询