我正在使用FileLock
,但我不知道为什么我总是遇到nonwritablechannelException exception
:
public static List<String> readFromFile(Context ctx, String filename) {
try {
FileInputStream fis = ctx.openFileInput(filename);
// lock this file
FileLock lock = fis.getChannel().tryLock(); // Exception here
// unlock this file
lock.release();
return null;
} catch (Exception e) {
Log.i(TAG, "Cannot read file");
e.printStackTrace();
}
return null;
}
当我从文件中写入时,我遇到了另一个异常:异常ClosedChannelException
public static boolean saveToFile(Context ctx, List<String> lst, String filename) {
try {
FileOutputStream fos = ctx.openFileOutput(filename, Context.MODE_PRIVATE);
// lock this file
FileLock lock = fos.getChannel().lock();
PackageObject obj = new PackageObject(lst);
ObjectOutputStream writer = new ObjectOutputStream(fos);
writer.writeObject(obj);
writer.close();
// unlock this file
lock.release(); // Exception at this line
fos.close();
return true;
} catch (Exception e) {
Log.i(TAG, "Cannot write file");
e.printStackTrace();
}
return false;
}
在 Android 开发者页面上,他们解释这个异常是:
尝试写入未打开写入的通道时会引发 NonWritableChannelException。
但我仍然无法解释为什么。请帮我弄清楚为什么我会遇到这个例外。
谢谢 :)