/**
* 锁住文件(不让其它线程或进程修改)
*
* @author kingfish
*/
public class LockFile{
public LockFile(){
}
public static void main(String[] args) throws Exception {
RandomAccessFile raf=new RandomAccessFile(new File("c:\\test.txt"), "rw"); FileChannel fc=raf.getChannel(); FileLock fl=fc.tryLock(); if(fl.isValid()) { System.out.println("get the lock!"); //测试线程 new Thread() { public void run(){ while(true){ try{ Thread.sleep(100); FileReader fr=new FileReader(new File("c:\\test.txt")); int c; while((c=fr.read())!= -1) { System.out.println("OK="+(char)c); } fr.close(); break; } catch(Exception e){ System.out.println("error="+e); } } } }.start(); //模拟其它操作的耗时:比如用notepad打开无法修改。但是用程序来读写此文件都会异常 raf.write("kingfish(八百里秦川@龙城异客)".getBytes()); Thread.sleep(5000); fl.release(); System.out.println("release the lock!"); } raf.close(); } }
程序运行的结果:
C:\java>java LockFile
get the lock!
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
release the lock!
OK=k
OK=i
OK=n
OK=g
OK=f
OK=i
OK=s
OK=h
OK=(
OK=八
OK=百
OK=里
OK=秦
OK=川
OK=@
OK=龙
OK=城
OK=异
OK=客
OK=)
C:\java>
</td> </tr> <tr>
↑返回目录
前一篇: java"克隆"入门
后一篇: java IO系统与正则表达式