我正在 SD 卡上的文件上存储一些数据,并从不同的线程读取相同的文件。为了避免读取和写入的竞争条件,我想在两个场景(读取和写入)中锁定文件
我心里有两个选择 1)我可以使用同步来做到这一点 2)我可以使用文件锁来做到这一点
我应该选择哪一个,为什么?哪一种内存效率更高?
我知道同步方式,但我不知道如何使用文件锁,所以有人可以告诉我使用文件锁的代码吗?
我尝试使用文件锁定,但它在 android 中不起作用,请查看代码。 任何帮助表示赞赏
File syncDatafile = new File(file, "sync.txt");
FileInputStream fileInputStream = new FileInputStream(syncDatafile);
java.nio.channels.FileLock lock = fileInputStream.getChannel().lock();
try{
FileWriter writer = new FileWriter(syncDatafile, true);
writer.write(data);
writer.flush();
writer.close();
}catch(Exception ex){
ex.printStackTrace();
}finally{
lock.release();
fileInputStream.close();
}
最佳答案
我很抱歉大家,这是我的错误,我使用了用于读取文件的 FileInputStream 。非常抱歉,现在已修复
File syncDatafile = new File(file, "sync.txt");
FileOutputStream fileoutputStream = new FileOutputStream (syncDatafile);
java.nio.channels.FileLock lock = fileInputStream.getChannel().lock();
try{
FileWriter writer = new FileWriter(syncDatafile, true);
writer.write(data);
writer.flush();
writer.close();
}catch(Exception ex){
ex.printStackTrace();
}finally{
lock.release();
fileInputStream.close();
}
关于java - Android 中写入锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20042398/