2013-01-08 30 views
2

我需要锁定从三个不同的Android应用程序读取和写入的文本文件...如此不同的进程。Android FileLock ...如何锁定来自不同进程的文件

当我试图在读取文件时写入和锁定(0L,Long.MAX_VALUE,true)(共享)时使用通道锁定()(独占模式)。

不幸的是,这种方法不起作用...当书写锁还没有被释放时,也一直在读取锁。

是否有合适的工作示例来解决此问题? 我做错了什么?

+1

“我做错了什么?” - 您试图让三个独立的应用程序同时使用相同的文本文件。就我而言,这就是那里的“有问题”。 – CommonsWare

+1

文件锁应该在那里解决这类问题。我不认为三个并发访问同一个文件的应用程序被认为是错误的。顺便说一句你有什么建议吗? – mrAlmond

+1

“我不认为三个并发访问同一个文件的应用程序会被认为是错误的” - 当然欢迎您的意见。 “你有什么建议吗?” - 当然。有一个应用程序拥有数据。让另外两个应用程序通过内置在Android中的任何可用IPC机制(例如内容提供者,远程服务(命令或绑定模式)和广播)与第一个应用程序进行通信。 – CommonsWare

回答

1

终于我解决了! FileLocks没问题......我的问题是,我正在使用storeToXml写入一个xml文件,可能会创建一个全新的文件...所以会创建新的文件描述符,并且锁定属性可能会丢失。 现在我锁定了另一个虚拟文件,而不是正在读取和写入的文件,并且所有内容都按预期工作。

+0

你会发布一些代码来显示两种情况(文件描述符丢失,不丢失),以便我们可以学习? –

+1

对于我现在很难进入那个旧代码......我唯一能告诉你的是,我最终没有锁定我正在编写的文件,而只是使用与锁文件不同的空文件。所以我确信没有人触摸或修改它,直到锁定被释放。 – mrAlmond

相关问题