关于同时读写文件的问题,请教大家一下

问题描述

有一第三方程序(可能是VC++写的),会不定时向一dat文件里写一状态参数;我需要写一个C#程序,定时(使用Timer)读取这dat文件里的参数。现在我发现只要我的C#程序一直读取时,第三方程序有时就写不进去dat文件。请问各位大牛,我程序里应该怎么写读取方法才能不影响第三方程序写文件?

解决方案

解决方案二:
会不定时向一dat文件里写一状态参数-》无法确定dat文件什么时候未使用。所以应该没有办法。
解决方案三:
publicstaticFileStreamOpen(stringpath,FileModemode,FileAccessaccess,FileShareshare)

可以看看打开的各种模式是否有作用
解决方案四:
这样的情况,不单要与只读方式打开data文件,而且,需要共享锁。还必须要选择flieShare方式为ReadWrite。因为随时有其他程序对其进行写操作。
解决方案五:
单纯读取文件是可以采用Shared方式,它不会影响写操作。实际上当你读取数据、在内存中处理数据一通之后,将来写文件的那一瞬间才真正需要互斥。我们可能不经意地写这种程序时用的是“既读又写”的模式打开文件,造成了无法打开文件。但是即使如此,其实许多时候最好的方法是使用统一的日志服务或者数据库机制来共享处理数据。服务的例子,例如你的另一个进程应该可以提供一个接口方法来读取数据,数据是从它自己管理的内存中的缓存中来,而不让其它进程随便去打开它自己的文件,甚至根本不知道它自己的文件是否存在、在哪个私有的环境目录下保存。
解决方案六:
比如说,如果你读取了文件之后迅速关闭连接,然后才开始你的数据分析工作,也是一种可以减小冲突几率的办法。
解决方案七:
再比如说有些日志程序,假设它打开abc.dat文件要写数据,发现打开失败,那么它立刻就会自动创建一个abc_1.dat这样的文件来写数据,如果下次再遇到冲突则自动创建abc_2.dat这样的文件来写数据.........要是你遇到这类“第三方程序”,那么就是一个好事儿,说明人家的程序以前一定是很好的生存经历、比较成熟。

时间: 2024-10-30 17:36:28

关于同时读写文件的问题,请教大家一下的相关文章

clr里能读写文件吗?

问题描述 请教各位大大clr里能读写文件吗?比如在clr里用:FileStreamaFile=newFileStream("e:\test.txt",FileMode.OpenOrCreate);我测试会报错误,是权限问题么? 解决方案 解决方案二:用绝对路径恐怕有问题解决方案三:啊,不用绝对路径怎么写啊,说穿了这个就是个SQL解决方案四:当然可以,报什么错?解决方案五:消息6522,级别16,状态1,过程LOHO_RendomNum,第0行在执行用户定义例程或聚合'LOHO_Rend

JavaScript读写文件的操作

JavaScript读写文件 <script> /* object.OpenTextFile(filename[, iomode[, create[, format]]]) 参数 object 必选项.object 应为 FileSystemObject 的名称. filename 必选项.指明要打开文件的字符串表达式. iomode 可选项.可以是三个常数之一:ForReading . ForWriting 或 ForAppending . create 可选项.Boolean 值,指明当指

C#读写文件的方法

17.3.1 按文本模式读写 SteamReader和StreamWriter类为我们提供了按文本模式读写数据的方法.下面的例子是从一个文本文件中读取内容并打印在屏幕上. 程序清单17-5: using System; using System.IO; class FileTest { public static void Main() { streamReader srd; try{ srd=File.OpenText("c:\\C#\\file1\\file1.txt"); } c

Android读写文件的N种写法

Android 读写文件的N种写法(待续...) 读取raw文件 // 读取raw文件 private void rawRead(){ String ret = ""; try { InputStream is = getResources().openRawResource(R.raw.my_raw); int len = is.available(); byte []buffer = new byte[len]; is.read(buffer); ret = EncodingUti

Android 读写文件方法汇总

以下是对Android中读写文件的方法进行了汇总介绍,需要的朋友可以过来参考下   一. 从resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写) 复制代码 代码如下: String res = ""; try{ InputStream in = getResources().openRawResource(R.raw.bbi); //在Testresrawbbi.txt, int length = in.available(); byte [] buffer =

Python读写文件方法总结

  本文实例总结了Python读写文件方法.分享给大家供大家参考.具体分析如下: 1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. ? 1 2 3 4 5 file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:不能把open语句放在try块里,因为当打

python读写文件操作示例程序

 日常操作中,少不了文本处理,如程序输入数据准备,python凭借其简洁优雅的语法,在文本处理上比C++等编译型语言开发效率高出一大截,下面看代码 文件操作示例     复制代码 代码如下: #输入文件 f = open(r'D:Python27pro123.bak')  #输出文件 fw = open(r'D:Python27pro123e.bak','w') #按行读出所有文本 lines = f.readlines() num = -1 for line in lines:     str

c++读写文件流实例程序讲解

 这篇文章主要介绍了c++读写文件流实例,大家参考使用吧 掌握文本文件读写的方法 了解二进制文件的读写方法   C++文件流:     复制代码 代码如下: fstream // 文件流 ifstream // 输入文件流 ofstream // 输出文件流   //创建一个文本文件并写入信息 //同向屏幕上输出信息一样将信息输出至文件 #include<iomanip.h> #include<fstream.h> void main() { ofstream f1("d

perl读写文件代码实例

  这篇文章主要介绍了perl读写文件代码实例,本文直接给出实现代码,需要的朋友可以参考下 #mode operand create truncate #read < #write > yes yes #append >> yes Case 1: Throw an exception if you cannot open the file: 代码如下: use strict; use warnings; my $filename = 'data.txt'; open(my $fh,

android 中添加了读写文件的权限,却报(Permission denied)错误

问题描述 android 中添加了读写文件的权限,却报(Permission denied)错误 android 中添加了读写文件的权限,却报open failed: EACCES (Permission denied) 太坑人了! 添加了权限 //代码部分: File file2 = new File(Environment.getExternalStorageDirectory(),"file2.txt"); file2.setWritable(true); file2.setRe