日期:2014-05-20  浏览次数:20710 次

[请教]java中不同程序对同一文件的访问
场景:存在多个应用程序,都需要对同一文件进行读写操作

如何控制不同应用程序之间的同步?

如何避免不同程序同时对同一文件读写,产生文件内容不一致的问题?

Note:是不同程序   ,不是不同进程对同一文件的读写。

------解决方案--------------------
利用线程来实现吧,读写文件代码放在一个类的方法里,加synchronized来实现同步,
------解决方案--------------------
建缓冲区/
------解决方案--------------------
You may want to check out class java.nio.FileChannel java.nio.FileLock and related classes.
------解决方案--------------------
文件锁
File file = new File(path);
RandomAccessFile raf = new RandomAccessFile(file, "rws ") //以独占方式打开文件
...
raf.close();

File file = new File(path);
RandomAccessFile raf = new RandomAccessFile(file, "rw ");
FileChannel fc = raf.getChannel();
//FileLock lock = fc.tryLock();
FileLock lock = fc.lock();
...
lock.release();
raf.close();
------解决方案--------------------
应在被读的文件上做文章!
让他同时只能被一个程序操作.
------解决方案--------------------
学习
------解决方案--------------------
应该是读者与写者的问题,不过很惭愧,我也没学好,帮顶一下!!1