2013-10-29 121 views
0

我開發了一個應用程序,使用java和Struts2在服務器上進行部署。它對文件進行了更改,因此我想一次限制對一個用戶的訪問,以避免data.How中的不一致我可以這樣做嗎?請幫助爲多用戶鎖定應用程序

+3

這是一個奇怪的要求,你確定嗎?爲什麼不只是同步文件修改代碼? – Taylor

回答

0

如何編寫一個提供方法來讀取/寫入這些文件的類。而這個類暴露了同步讀/寫功能。

e.g

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

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

    public synchronized String doRead(String fileHandle) { 
    } 

} 

理念是封裝文件讀取/在一個類中寫操作和同步該類的讀/寫操作的訪問。

0

您可以使用文件系統爲正在編輯的文件創建「鎖定」文件。如果某人在您的應用程序中打開了該文件 - 鎖文件緊挨着它。一旦用戶完成編輯該文件,鎖定文件消失,另一個用戶可以打開該文件。

0

在相同的應用程序中,但對於多線程我們可以synchronize的訪問。但對同一文件的多個應用程序(例如Java中的同一應用程序的多個實例),我們可以這樣做:

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

這將是整個應用程序,由操作系統管理。