Android中的并发文件访问

zie*_*ikk 10 java filesystems concurrency android

我知道许多操作系统在文件系统上执行某种锁定以防止视图不一致.Java和/或Android是否保证文件访问的线程安全性?在我继续编写并发代码之前,我想尽可能多地了解这一点.

如果我错过了一个回答类似的问题,请随时关闭此主题.谢谢.

hac*_*bod 10

Android建立在Linux之上,因此继承了Linux的文件系统语义.除非您明确锁定文件,否则多个应用程序和线程可以打开它以进行读/写访问.除非您确实需要跨进程文件同步,否则我建议使用普通的Java同步原语来仲裁对文件的访问.


mfr*_*kli 5

正常的读/写功能(FileInputStream等)不提供任何线程安全AFAIK.要实现线程安全,您需要使用FileChannel.这看起来像是这样的:

FileInputStream in = new FileInputStream("file.txt");
FileChannel channel = in.getChannel();
FileLock lock = channel.lock();
// do some reading
lock.release();
Run Code Online (Sandbox Code Playgroud)

我会阅读文件锁文档,并注意线程!