這是一個代碼片段,我正在打開一個文件,用於同時寫入兩個FileOutputStream
。如何判斷文件是否在Android中進行讀寫?
FileOutputStream fis = null;
File openFile = new File("myfile");
try {
fis = new FileOutputStream(openFile);
Toast toast = Toast.makeText(getApplicationContext(), "Opened", Toast.LENGTH_SHORT);
toast.show();
}
catch (FileNotFoundException e1) {
Toast toast = Toast.makeText(getApplicationContext(), "FileNotFound", Toast.LENGTH_SHORT);
toast.show();
}
// now try to open it again
FileOutputStream fis2 = null;
try {
fis2 = new FileOutputStream(openFile);
Toast toast = Toast.makeText(getApplicationContext(), "Opened2", Toast.LENGTH_SHORT);
toast.show();
}
catch (Exception e1) {
Toast toast = Toast.makeText(getApplicationContext(), "Exception: " + e1.getMessage(), Toast.LENGTH_SHORT);
toast.show();
}
我最終得到了兩個Toast
消息「Opened」和「Opened2」。
我需要確保我沒有打開一個文件來讀取/寫入/刪除當前打開的另一個實例寫入。如何確保我不修改當前可以寫入的文件?
+1有關lsof實用程序的信息 - 它對我的情況有所幫助 – ol0
沒有辦法說「我即將閱讀該文件,請確保其他進程在完成之前無法寫入」?我正在使用SharedPreferences,並在一段時間後丟失,但在使用Android API時,我無法使用FileLock。 – 3c71