import java.nio.channels.*
/**
*
* @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( (char) c)
}
fr.close()
break
}
catch (Exception e) {
System.out.println(e)
}
}
}
}.start()
//模拟其它 *** 作的耗时:比如用notepad打开无法修改。但是用程序来读写此文件都会异常
raf.write("kingfish(八百里秦川@龙城异客)".getBytes())
Thread.sleep(5000)
fl.release()
System.out.println("release the lock!")
}
raf.close()
}
}
可以通过BufferedReader流的形式进行流读取,之后通过readLine方法获取到读取的内容。BufferedReaderbre=nulltry{Stringfile="D:/test/test.txt"bre=newBufferedReader(newFileReader(file))//此时获取到的bre就是整个文件的欢迎分享,转载请注明来源:内存溢出
评论列表(0条)