0

Java と Struts2 を使用してサーバーにデプロイするアプリケーションを開発しました。ファイルに変更を加えるため、データの不整合を避けるために一度に 1 人のユーザーにアクセスを制限したいのですが、どうすればよいですか?助けてください

4

3 に答える 3

0

同じアプリケーションで複数のスレッドにsynchronizeアクセスできます。しかし、同じファイル上の複数のアプリケーション (たとえば、Java での同じアプリケーションの複数のインスタンス) の場合、次のようにすることができます。

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

これはアプリケーション全体に適用され、OS によって管理されます。

于 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) {
  }

}

アイデアは、ファイルの読み取り/書き込み操作を 1 つのクラスにカプセル化し、そのクラスの読み取り/書き込み操作のアクセスを同期することです。

于 2013-10-29T20:49:39.287 に答える
0

ファイル システムを使用して、編集中のファイルの「ロック」ファイルを作成できます。誰かがあなたのアプリケーションでそのファイルを開いている場合、ロック ファイルはその隣にあります。ユーザーがそのファイルの編集を完了すると、ロック ファイルは消え、他のユーザーはそのファイルを開くことができます。

于 2013-10-29T20:50:43.290 に答える