大家好,我现在要读取一个文件,而且要保证在读取的时候这个文件不会被其他程序修改,我想使用FileLock来锁住文件。但是不知道怎么操作。请高手帮忙。以下是文件的读取
BufferedReader reader = new BufferedReader(new FileReader(a));
// 操作
reader.readLine();
reader.close();怎么在上面的代码里加锁。保证文件读取同步
BufferedReader reader = new BufferedReader(new FileReader(a));
// 操作
reader.readLine();
reader.close();怎么在上面的代码里加锁。保证文件读取同步
/**
* 锁住文件(不让其它线程或进程修改)
*
* @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=)