问一个关于FileShare控制读写同一个文件的问题
时间:2011-12-12
来源:互联网
我想让两个文件流fs1,fs2访问同一个文件C:\ABC.txt,其中fs1读,fs2写。
C# code
改成如下后
C# code
改成如下后
C# code
我的问题是为什么fs1明明指定了后面可以有文件流写文件,还要在后面的文件流fs2使用FileShare.Read后才能写文件呢?
C# code
FileStream fs1 = File.Open("C:\\ABC.txt", FileMode.Open, FileAccess.Read, FileShare.Write); byte[] fbs1 = new byte[8]; fs1.Read(fbs1,0,8); FileStream fs2 = File.Open("C:\\ABC.txt", FileMode.Open, FileAccess.Write);//我在文件流fs1中明明已经指定了 FileShare.Write,可是不知道为什么这里还是会抛出异常 byte[] fbs2 = new byte[8]; fs2.Write(fbs2, 0, 8); int i = 0; i++; fs1.Close(); fs2.Close();
改成如下后
C# code
FileStream fs1 = File.Open("C:\\ABC.txt", FileMode.Open, FileAccess.Read, FileShare.Write); byte[] fbs1 = new byte[8]; fs1.Read(fbs1,0,8); FileStream fs2 = File.Open("C:\\ABC.txt",FileMode.Open,FileAccess.Write,FileShare.Write);//还是会抛出异常 byte[] fbs2 = new byte[8]; fs2.Write(fbs2, 0, 8); int i = 0; i++; fs1.Close(); fs2.Close();
改成如下后
C# code
FileStream fs1 = File.Open("C:\\ABC.txt", FileMode.Open, FileAccess.Read, FileShare.Write); byte[] fbs1 = new byte[8]; fs1.Read(fbs1,0,8); FileStream fs2 = File.Open("C:\\ABC.txt",FileMode.Open,FileAccess.Write,FileShare.Read);//异常消失,顺利通过,实验表明这里用FileShare.ReadWrite也可以 byte[] fbs2 = new byte[8]; fs2.Write(fbs2, 0, 8); int i = 0; i++; fs1.Close(); fs2.Close();
我的问题是为什么fs1明明指定了后面可以有文件流写文件,还要在后面的文件流fs2使用FileShare.Read后才能写文件呢?
作者: BusyDonkey 发布时间: 2011-12-12
http://msdn.microsoft.com/zh-cn/library/system.io.fileshare(VS.80).aspx
http://www.congci.com/item/file-read-write-op-lock
http://www.congci.com/item/file-read-write-op-lock
作者: hefeng_aspnet 发布时间: 2011-12-12
引用 1 楼 hefeng_aspnet 的回复:
http://msdn.microsoft.com/zh-cn/library/system.io.fileshare(VS.80).aspx
http://www.congci.com/item/file-read-write-op-lock
http://msdn.microsoft.com/zh-cn/library/system.io.fileshare(VS.80).aspx
http://www.congci.com/item/file-read-write-op-lock
为什么
ReadFile(FileAccess.Read, FileShare.Read); ReadFile(FileAccess.Read, FileShare.Read);
可以
而
WriteFile(FileAccess.Write, FileShare.Write); WriteFile(FileMode.Create, FileAccess.Write, FileShare.Write);
就不行了?
作者: BusyDonkey 发布时间: 2011-12-12
引用 1 楼 hefeng_aspnet 的回复:
http://msdn.microsoft.com/zh-cn/library/system.io.fileshare(VS.80).aspx
http://www.congci.com/item/file-read-write-op-lock
http://msdn.microsoft.com/zh-cn/library/system.io.fileshare(VS.80).aspx
http://www.congci.com/item/file-read-write-op-lock
不好意思写错了,我想请教下,
为什么
ReadFile(FileAccess.Read, FileShare.Write); WriteFile(FileMode.Create, FileAccess.Write, FileShare.Write);
不行
而
ReadFile(FileAccess.Read, FileShare.Write); WriteFile(FileMode.Create, FileAccess.Write, FileShare.Read);
却可以
文中貌似没提到这点
作者: BusyDonkey 发布时间: 2011-12-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28