2010-08-23 66 views
4

鑑於對File實例的引用,是否可以(以編程方式)檢測相應的文件是否被鎖定,如果是,哪個進程持有鎖?檢測鎖定的文件

我正在使用運行在Windows上的Java 5。

謝謝, 唐

+1

退房http://stackoverflow.com/questions/1500174/checking-if-a-file-locked-in-java – svrist 2010-08-23 08:27:05

+1

此線程有幫助嗎? http://stackoverflow.com/questions/1390592/java-check-if-file-is-already-open – bdhar 2010-08-23 08:28:09

+1

我使用Sysinternal的Procexp應用程序進行這種檢測,因使用低級別和未公開的Windows API而聞名,所以我永遠不會期望它在Java中是可能的。但是,如果有辦法,那會很好。 – 2010-08-23 08:36:11

回答

2

,我認爲這是唯一可能在本機的方式。您需要訪問FileHandle信息。寫一個DLL並通過JNI將它連接到你的Java應用程序。使用SystemHandleInformation(16)調用NtQuerySystemInformation。您可以獲得所有打開的句柄的列表,搜索FileHandles,將FileHandles與您自己的文件進行比較。

+0

非常好。我認爲這應該被接受的答案。 – 2010-08-24 05:59:54