我想编写两个适用于单个文本文件的Android应用程序。
第一个应用程序的任务(App1) -
一个。检查文本文件" abc.txt"存在于SD卡的根部。
B中。如果不存在,请创建" abc.txt"在sdcard的根源。
℃。继续每隔5分钟定期将数据写入abc.txt。
第二个应用程序的任务(App2) -
一个。检查文本文件" abc.txt"存在于SD卡的根部。
B中。如果存在,请从文件" abc.txt"中读取所有数据。和阅读后删除它
现在我可以读取和写入" abc.txt"每个应用程序单独,但我面临同步问题。我想确保如果第一个应用程序正在写入文本文件,则第二个文件必须等到文本文件准备好被读取。我本来会用
synchronized
关键字曾经是一个应用程序。有人可以在这种情况下帮助我吗?
答案 0 :(得分:0)
FileLock
应该提供您需要的功能。您可以锁定abc.txt
,也可以锁定其他文件,这些文件将始终存在,并且仅用作应用程序的系统范围锁。
来自doc:
多个进程可以在文件的同一区域上保存共享锁,但只有一个进程可以在文件的给定区域上保持独占锁,并且没有其他进程可以同时保持与独占锁重叠的共享锁。 / p>
您可以从FileChannel
获取整个文件的独占FileLock
。