我想让两个文件流fs1,fs2访问同一个文件C:\ABC.txt,其中fs1读,fs2写。
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();
改成如下后 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();
改成如下后 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后才能写文件呢?
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();
改成如下后 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();
改成如下后 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后才能写文件呢?
解决方案 »
- 请教大虾,关于自定义控件的快捷键设计
- 为什么我的代码日志会写2遍呢
- 泛型绑定GridView
- vb的转换为C#的问题
- 如何返回一个数据库服务器下的所有数据库,如返回(local)下的master,northwid,.....
- win7下的VS 2008出现的错误:devenv.exe 中的 0x14475578 处未处理的异常: 0xC0000005: 读取位置 0x00000000
- ***请教:写入数据到Excel文件的问题***
- C# Microsoft.Office.Interop.Excel 修改行高出错,出现重复行
- 需要C#的公司,是否兼收VB.net的程序员?
- RC2和bete2有何区别???
- 求 截取正则表达式
- 有没有这样一个属性?
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);
就不行了?
为什么
ReadFile(FileAccess.Read, FileShare.Write); WriteFile(FileMode.Create, FileAccess.Write, FileShare.Write);
不行而
ReadFile(FileAccess.Read, FileShare.Write); WriteFile(FileMode.Create, FileAccess.Write, FileShare.Read);
却可以文中貌似没提到这点