怎么判断当前文件是否正在被改写!急!

问题描述

我现在做的一个程序,基本功能是这样的:Pc端的程序使用timer_click事件,每间隔几秒判断是否有文件存在从指定的文件夹中若有将文件读取并对其进行相应的操作(操作完成会移出文件)而这些文件是从硬件设备上转移过去的(利用硬件的通讯软件),如果在timer_click事件开启时,正巧有一个文件正通过硬件的通讯软件写入到指定的文件夹下,也就是说某一文件正在被写入我想加一个判断:如果文件在被写入时,就不进行操作。但是我不知道用什么办法能够判断,某一文件正在被写入。请教各位大侠!非常急!

解决方案

解决方案二:
做错误处理,以读写权限去打开该文件,如果能打开,说明该文件目前没有被改动的可能.否则便是有可能被改动.
解决方案三:
filewatch
解决方案四:
读写权限去打开该文件,不是很明白,能举个例子么,非常感谢!
解决方案五:
捕获异常也可以吧
解决方案六:
try{sr=newStreamReader(filename,Encoding.Default);while((record=sr.ReadLine())!=null){line=changeFromOperate(record);dr=newDataRowOperate(dsFromBarcode,line);dsFromBarcode.Tables[0].Rows.Add(dr);}sr.Close();}catch(Exceptionex){System.Windows.Forms.MessageBox.Show(ex.Message.ToString());}捕获异常我试过,到sr=new...这一行就出现错误信息,就是不显示ex.Message.ToString());
解决方案七:
try{File.Open("路径",FileMode.Open,FileAccess.ReadWrite);//可以打开,表示目前无其他程序写该文件.}catch{//无法打开,如果文件存在,表示目前写权限已经其他程序锁定}

解决方案八:
同意用捕获异常
解决方案九:
为什么try了没用,就算报错他不会执行catch里的操作阿
解决方案十:
publicvoidRead(){if(!File.Exists(path)){//如果文件不存在,处理过程}else{try{//读取文件中的内容}catch(Exceptione){Thread.Sleep(10);Read();}}}

关于锁你可以参考一下http://blog.csdn.net/tjvictor/archive/2007/01/20/1488290.aspx建议使用Mutex在操作队列的地方进行加上互斥操作,比如这样:privatevoidthread1Func(){for(intcount=0;count<10;count++){lock(this){mutex.WaitOne();//读取操作mutex.ReleaseMutex();}}}privatevoidthread2Func(){for(intcount=0;count<10;count++){lock(this){mutex.WaitOne();//写入操作mutex.ReleaseMutex();}}}

解决方案十一:
用FileSystemWatcher
解决方案十二:
同意楼上的
解决方案十三:
的确FileSystemWatcher是一种解决这个问题的好办法学习了:)

时间: 2024-08-07 14:52:03

怎么判断当前文件是否正在被改写!急!的相关文章

判断远程文件是否存在的php函数

函数|是否存在 判断远程的文件是否存在. <?php /*  函数:remote_file_exists  功能:判断远程文件是否存在  参数: $url_file - 远程文件URL  返回:存在返回true,不存在或者其他原因返回false*/function remote_file_exists($url_file){ //检测输入 $url_file = trim($url_file); if (empty($url_file)) { return false; } $url_arr =

PHP判断网络文件是否存在的方法

 这篇文章主要介绍了PHP判断网络文件是否存在的方法,实例分析了php读取网络文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP判断网络文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 $file = "http://www.jb51.net/demo/file_exists.zip"; $fileExists = @file_get_contents($file,null,null,-1,1) ? true

PHP利用curl判断远程文件是否存在的方法

  PHP利用curl判断远程文件是否存在,请看下边的代码: //判断远程文件 function check_remote_file_exists($url) { $curl = curl_init($url); // 不取回数据 curl_setopt($curl, CURLOPT_NOBODY, true); // 发送请求 $result = curl_exec($curl); $found = false; // 如果请求没有发送失败 if ($result !== false) { /

IE及IE6浏览器中判断JS文件加载成功失败的方法

 这篇文章主要介绍了IE及IE6浏览器中判断JS文件加载成功失败的方法,本文使用vbscript来解决这个问题,需要的朋友可以参考下     浏览器的文件加载实际上是有非常纠结的兼容问题的.最近看到@lifesinger做了一个具体的总结.这里比较麻烦的是IE6~8不区分加载成功或失败,都走一个回调.在网上看了一种解决方案是,在加载文件的最后置一个全局变量或改变标签的属性来区分,这样成功与否就通过这个标志位判断.但显然不太完美,还要改加载文件. 后来尝试另一种思路,先创建一个vbscript,s

Js判断CSS文件加载完毕的具体实现

 在多数情况下我们不需要判断css文件是否加载成功了,但有些时间这个功能还是需要的,今天我来整理了兼容各种浏览器的判断CSS文件加载完毕实现方法与各位分享 要判断这个 CSS 文件是否加载完毕,各个浏览器的做法差异比较大,这次要说IE浏览器做的不错,我们可以直接通过onload方法来处理CSS加载完成以后的处理:  代码如下: // 代码节选至seajs function styleOnload(node, callback) {     // for IE6-9 and Opera     i

PHP判断网络文件是否存在的方法_php技巧

本文实例讲述了PHP判断网络文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: $file = "http://www.jb51.net/demo/file_exists.zip"; $fileExists = @file_get_contents($file,null,null,-1,1) ? true : false; if($fileExists){ echo "File Exists!"; }else{ echo "Sorry, we c

java-JAVA中如何判断一个文件是否存在,如果不存在则创建它?

问题描述 JAVA中如何判断一个文件是否存在,如果不存在则创建它? JAVA中如何判断一个文件是否存在,如果不存在则创建它? 求帮助 源码如下: public void SaveFile(String fileName,String content) throws IOException{ File file =new File(fileName); if(!file.exists()){ System.out.println("不存在"); System.out.println(fi

javascript-js判断网络文件(服务器文件)是否存在,火狐

问题描述 js判断网络文件(服务器文件)是否存在,火狐 需要支持火狐的,所以不能用ActiveXObject 项目有点急,求大神能解决,小弟感激不尽 解决方案 要在服务器端做,客户端js有安全问题,弄不了,ie除非要配置过安全,要不照样弄不了 解决方案二: http://www.cnblogs.com/peaceshow/archive/2012/08/09/2631007.html 解决方案三: js 判断服务器文件是否存在问题JS判断文件是否存在js 判断文件是否存在

js 判断本地文件是否存在 不使用 Scripting.FileSystemObject

问题描述 js 判断本地文件是否存在 不使用 Scripting.FileSystemObject js 判断本地文件是否存在 不使用 Scripting.FileSystemObject 解决方案 function ReportFileStatus(filespec) { var fso s = filespec; fso = new ActiveXObject(""Scripting.FileSystemObject""); if (fso.FileExists