用于在android中编写的锁定文件

时间:2013-11-18 07:34:42

标签: java android file

我将一些数据存储在SD卡上的文件中,并从不同的线程读取相同的文件。为了避免阅读和写作的竞争条件,我想在场景(阅读和写作)中锁定文件

我脑子里有两种选择 1)我可以使用Synchronization执行此操作 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();
                }

1 个答案:

答案 0 :(得分:5)

我很抱歉,我错误地使用了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();
                }