我将一些数据存储在 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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)