/**
* 锁住文件(不让其它线程或进程修改)
*
* @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系统与正则表达式