import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.channels.FileLock;
public class FileReaderLock {
public static void main(String[] args) throws Exception {
FileInputStream fos = new FileInputStream("file.txt");
//获取文件锁 FileLock 对象
FileLock fl = fos.getChannel().tryLock();
//下面两个都会报错
FileOutputStream fos1 = new FileOutputStream("file.txt");
// fos1.write(1);
FileInputStream fis = new FileInputStream("file.txt");
// fis.read();
//tryLock是尝试获取锁,有可能为空,所以要判断
if (fl != null) {
System.out.println("Locked File");
Thread.sleep(100);
fl.release();//释放锁
System.out.println("Released Lock");
}
fos.close();
}
}
本文探讨了如何使用Java的FileLock机制来锁定文件,并防止其他进程同时修改同一文件。文章通过示例代码展示了使用FileInputStream和FileOutputStream操作文件时的限制,并提出使用RandomAccessFile替代以解决文件锁无法获取的问题。
59

被折叠的 条评论
为什么被折叠?



