一起认识FileShare
你平时打开一件文件使用什么?
using (FileStream fs = new FileStream(file, FileMode.Open)?
using (FileStream fs = new FileStream(file, FileMode.Open,FileAccess.Read)?
using (FileStream fs = new FileStream(file, FileMode.Open,FileAccess.Read,FileShare.ReadWrite))?
.net System.IO.FileStream的构造函数中有:
FileStream(string path, FileMode mode) : this(path, mode, (mode == FileMode.Append) ? FileAccess.Write : FileAccess.ReadWrite, FileShare.Read, , |
可见,FileShare的默认值是FileShare.Read
如果我们以FileShare.Read打开一个文件,如果这个文件在此之前已经被另一个FileStream open,而且没有Close(),一个System.IO.IOException 将会产生。
因此,如果仅仅读取文件,就使用 using (FileStream fs = new FileStream(file, FileMode.Open,FileAccess.Read,FileShare.ReadWrite)).
是不是这样就万无一失了呢?
因为有FileShare.None,FileShare.Delete的存在,所以答案是No.
如果文件以FileShare.None模式打开,则在此这后的所有的request,将出throw exception, even if only read. fortunately,this case is infrequence.
转载于:https://www.cnblogs.com/DataFlow/archive/2008/11/28/1343302.html
一起认识FileShare相关推荐
- FileStream 的FileShare一点小认识
C#读写文本文件一般都是用StreamWriter来实现(读书的时候就这样用.毕业后这几年基本也是这样干的),通常代码例如以下: using (StreamWriter sw = new Stream ...
- FileShare —— 基于 Windows IOCP 无状态高并发Socket I/O 模型
为尊重原作者,首先附上对我进步非常有用的链接 http://blog.csdn.net/piggyxp/article/details/6922277 这一次的小灵感,是因为要进行网络应用课程设计.所 ...
- 【C#】集合_哈希表_字典_泛型_文件
数组能做到:存放同种类型数据,且数据个数确定 object类型的数组能满足:放各种类型的数据,确定放多少个,但是随意插入元素,数组做不到 集合能做到:存放各种数据类型,且不确定存放多少个,能做到随意插 ...
- C# 的三种序列化方法
序列化是将一个对象转换成字节流以达到将其长期保存在内存.数据库或文件中的处理过程.它的主要目的是保存对象的状态以便以后需要的时候使用.与其相反的过程叫做反序列化. 序列化一个对象 为了序列化一个对象, ...
- CentOS中vsftp安装与配置
1. 安装 使用chkconfig --list来查看是否装有vsftpd服务: 使用yum命令直接安装:yum -y install vsftpd 然后为它创建日志文件:touch /var/ ...
- 用C#去除代码的SourceSafe管理
经常看一些的程序,有些一个解决方案带有多个项目,由于代码比较多,多人开发,所以好多vs.net下的工程是用source safe进行版本控制的.而用source safe进行版本控制需要局域网路径共享 ...
- C#实现对象的Xml格式序列化及反序列化
要序列化的对象的类: [Serializable] public class Person { private string name; public string Name { get { retu ...
- 路径,文件,目录,I/O常见操作汇总
摘要: 文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案 ...
- 如何有效的使用C#读取文件
你平时是怎么读取文件的?使用流读取.是的没错,C#给我们提供了非常强大的类库(又一次吹捧了.NET一番),里面封装了几乎所有我们可以想到的和我们没有想到的类,流是读取文件的一般手段,那么你真的会用它读 ...
最新文章
- jQuery 技术揭秘
- php中mvc代表什么意思,php mvc是什么意思?
- 机器学习--Hoeffding Inequality--界定概率边界
- NVM安装与使用(实现Node多版本控制)
- 指定端口传输_高速数字传输链路测试 - 高速数字电路仿真设计与测试技术发展趋势综述(二)...
- php版本哪个没有面向对象,php面向对象的方法重载两种版本比较
- MySql4.1.7 + PHP5 + Apache2.0.52(win2003下测试通过)
- 怎样查看JVM的默认收集器
- git遇到的问题 .Git: There is no tracking information for the current branch.
- 关于Ajax的get与post浅分析,同步请求与异步请求,跨域请求;
- 方法级别的java日志输出控制(一)
- java读取excel图表模板,修改选值范围
- C语言乘法口诀表代码
- dell电脑无法修复此计算机,不重装系统将DELL戴尔电脑恢复到出厂状态教程
- 计算机将会代替老师吗英语范文,英文作文电脑对教育的重要意义
- 关于什么是物联网?没有比这篇文章更全的了
- 解锁电机气隙公差分析之奥秘!
- 通过ip获取地理位置
- 星露谷物语联机服务器位置已满,星露谷物语联机版
- linux gpu 风扇速度,如何在无头节点上调整NVIDIA GPU风扇速度?
热门文章
- 图的遍历DFS与BFS(邻接表)
- 抽象代数的抽象方法本质
- ajaxfileupload带参数上传文件
- 加入域时遇到“找不到网络路径”错误解决办法汇总
- [转]使用Ant进行ssh和scp操作
- Linux Shell常用技巧(三)
- android RxJava(RxAndroid)的简单使用
- android jni 返值
- Python时间库—datetime的详解及使用
- RabbitMQ,RabbitMQ 的工作模式,Spring 整合 RabbitMQ,Springboot 整合RabbitMQ