【转】C#读取文件时的共享方式

string sFileName = @"C:\Exchange.dat";
System.IO.StreamReader file = new System.IO.StreamReader(sFileName);
string sTxt = file.ReadLine();
file.Close();
在这个代码中,C#读取文件时,默认是Read模式,即它打开文件后,别的应用程序只能读取该文件而不能修改文件。

如果要别的应用程序在它打开该文件的时候也能修改该文件,则需要指定模式为ReadWrite:
string sFileName = @"C:\Exchange.dat";
FileStream fs = new FileStream(sFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
System.IO.StreamReader file = new System.IO.StreamReader(fs);
string sTxt = file.ReadLine();
file.Close();

这里的共享方式FileShare,是指授予其它应用程序在操作该文件时所具有的权限。取值有None、Read、Write、ReadWrite等。

None:谢绝共享当前文件。文件关闭前,打开该文件的任何请求(由此进程或另一进程发出的请求)都将失败。

Read:允许随后打开文件读取。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取的请求(由此进程或另一进程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。

ReadWrite:允许随后打开文件读取或写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取或写入的请求(由此进程或另一进程发出)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。

Write:允许随后打开文件写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求(由此进程或另一进过程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。

感觉WriteNone的效果一样,都不能读和写。文件都不能打开,授予写的权限有何用!所以FileShare.None、FileShare.Write的时候,别的应用程序打开文件的时候没权限:

FileShare.Read的时候,则只能打开,而不能修改:

时间: 2024-07-31 12:01:51

【转】C#读取文件时的共享方式的相关文章

解决Python读取文件时出现UnicodeDecodeError: 'gbk' codec can't decode byte...

用Python在读取某个html文件时会遇到下面问题: 出问题的代码: 1 if __name__ == '__main__': 2 fileHandler = open('../report.html', mode='r') 3 4 report_lines = fileHandler.readlines() 5 for line in report_lines: 6 print(line.rstrip()) 修改方式是在open方法指定参数encoding='UTF-8': if __nam

fstream读取文件时如何判断读到文件尾

使用fstream读取文件,什么时候读到文件结束呢.首先想到的是,将现在的位置与文件的长度对比,然后再fstream中无法直接获取文件长度.可以采用如下方法 fstream in; in.open("path",ios::in); in.seekg(0,ios::end); int length=in.tellg(); in.seekg(0.ios::beg); whiel(in.tellg()<length) { dosomething; } 这样是不是有点麻烦,在网上查了一圈

shell读取文件的几种方式

案例文本文件 [[email protected]01 ~]# cat a.txt ID name gender age email phone 1 Bob male 28 [email protected] 18023394012 2 Alice female 24 [email protected] 18084925203 3 Tony male 21 [email protected]163.com 17048792503 4 Kevin male 21 [email protected]

关于java读取文件的几种方式

摘自:http://jaczhao.iteye.com/blog/1616716 Java代码 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.prin

FileReader读取文件的三种方式

package com.agoly.test; //import java.io.*; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class FileTest { public static void main(String[] args) { // 读取文件的方式一:逐个字符来读取文本文件 FileReader fr = null; try { fr

FileSystemWatcher 读取文件时出现被占用的解决方法

今天做一个小程序监控目录并序列化XML时遇到第一次正常,第二个新文件加入时出现文件被占用的错误,记录下解决方法. 1 FileSystemWatcher watcher = new FileSystemWatcher{ 2 Path = path, 3 Filter = filter, 4 EnableRaisingEvents = true, 5 IncludeSubdirectories = true, 6 NotifyFilter = NotifyFilters.Attributes |

Java读取文件的几种方式

package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.RandomAccessFile; impor

StreamReader读取文件时出现乱码的解决方案

今天在做一个打开文件对话框OpenFileDialog时,需要对打开的文件进行读取,显示在在窗体中的RichTextBox中.但是在显示文件时,却发现显示的中文字符串出现乱码.代码的关键部分如下所示: 1 StreamReader sr = new StreamReader(openFileDialog.OpenFile()); 2 string str = sr.ReadToEnd(); 3 childForm.richTextBox1.Text = str; 开始我也想到了是字符编码出了问题

Ajax读取文件时出现的缓存问题

对于Ajax缓存问题时,由于浏览器的版本问题,有时候当服务器端已更改文件中的内容,而客户端并得不到更新后的文件,而是延续之前的文件内容,解决办法是:在读取的文件内容后加一串的地址:JSON的格式为[{a:4,b:5},{c:5,d:6}]这种格式. 比如下面 window.onload=function(){var oBtn=document.getElementById('btn1');oBtn.onclick=function(){ajax('1.txt?t='+new Date().get