我开发了一个使用java和Struts2在服务器上部署的应用程序。它对文件进行了更改,所以我想一次限制对一个用户的访问,以避免数据不一致。我该怎么做?请帮助
答案 0 :(得分:0)
如何编写一个提供读/写这些文件的方法的类。此类公开了同步读/写功能。
e.g
public class FileManager {
HashMap<String, File> _fileHandleMap;
public synchronized void doWrite(String fileHandle, String bufferToWrite) {
.....
}
public synchronized String doRead(String fileHandle) {
}
}
想法是将文件读/写操作封装在一个类中,并同步该类的读/写操作的访问。
答案 1 :(得分:0)
您可以使用文件系统为正在编辑的文件创建“锁定”文件。如果有人在您的应用程序中打开该文件 - 锁定文件就在它旁边。用户完成编辑该文件后,锁定文件将消失,另一个用户可以打开该文件。
答案 2 :(得分:0)
在同一个应用程序中,但对于多个线程,我们可以synchronize
访问。但是对于同一文件上的多个应用程序(例如java中相同应用程序的多个实例),我们可以这样做:
RandomAccessFile raf = new RandomAccessFile( "scatterAndGather.txt", "rw" );
FileChannel fc = raf.getChannel();
fileLock=fc.lock(0, fc.size(), false);
这将在整个应用程序中进行,并由操作系统管理。