0

我已经开发了一个使用 java 和 Struts2 部署在服务器上的应用程序。它会更改文件,所以我想一次限制对一个用户的访问,以避免数据不一致。我该怎么做?请帮忙

4

3 回答 3

0

在同一个应用程序中,但对于多个线程,我们可以synchronize访问。但是对于同一个文件上的多个应用程序(例如 java 中同一个应用程序的多个实例),我们可以这样做:

 RandomAccessFile raf = new RandomAccessFile( "scatterAndGather.txt", "rw" );
 FileChannel fc = raf.getChannel();
 fileLock=fc.lock(0, fc.size(), false);

这将跨越应用程序并由操作系统管理。

于 2013-10-29T21:00:04.087 回答
0

如何编写一个提供读取/写入这些文件的方法的类。并且这个类公开了同步的读/写功能。

例如

public class FileManager {
  HashMap<String, File> _fileHandleMap;

  public synchronized void doWrite(String fileHandle, String bufferToWrite) {
     .....
  }

  public synchronized String doRead(String fileHandle) {
  }

}

思路是将文件读/写操作封装在一个类中,同步该类的读/写操作的访问。

于 2013-10-29T20:49:39.287 回答
0

您可以使用文件系统为正在编辑的文件创建“锁定”文件。如果有人在您的应用程序中打开了该文件 - 锁定文件就在它旁边。一旦用户完成该文件的编辑,锁定文件就会消失,其他用户可以打开该文件。

于 2013-10-29T20:50:43.290 回答