【发布时间】:2013-01-08 17:12:48
【问题描述】:
我需要锁定一个从三个不同的 android 应用程序读取和写入的文本文件......所以不同的进程。
我尝试在写入时使用通道 lock()(独占模式),在读取文件时使用 lock(0L, Long.MAX_VALUE, true)(共享)。
不幸的是,这种方法不起作用...在读取时总是获取锁,当写入锁尚未释放时也是如此。
是否有合适且可行的示例来解决此问题? 我做错了吗?
【问题讨论】:
-
“我做错了吗?” -- 您正试图让三个独立的应用程序同时处理同一个文本文件。就我而言,这就是“有问题”。
-
文件锁应该可以解决这类问题。我不认为对同一个文件进行并发访问的三个应用程序被认为是错误的。顺便说一句,你有什么建议吗?
-
“我不认为三个应用程序同时访问同一个文件是错误的”——当然欢迎您提出意见。 “你有什么建议吗?” - 当然。让一个应用拥有数据。让其他两个应用通过 Android 内置的任何可用 IPC 机制与第一个应用通信,例如内容提供程序、远程服务(命令或绑定模式)和广播。
-
我已经解决了这个问题...看我的答案。
-
@CommonsWare :我认为应用程序永远不会拥有数据,用户拥有。用户可能需要不同的应用程序来处理他们的数据,这些应用程序可能彼此不认识。文件是最通用、最简单的数据存储方式。所以在某些情况下,不同的应用程序需要访问同一个文件。这就是设计文件锁的原因。