我最近在我的下载异步任务中添加了文件锁:
FileOutputStream file = new FileOutputStream(_outFile);
file.getChannel().lock();
并且在下载完成之后,
file.close()
以释放锁定。
从一个名为BroadcastReceiver(不同的线程)的文件中,我需要查看哪些文件已下载,哪些文件仍处于锁定状态。我从trylock开始:
for (int i=0; i<files.length; i++) {
try {
System.out.print((files[i]).getName());
test = new FileOutputStream(files[i]);
FileLock lock = test.getChannel().tryLock();
if (lock != null) {
lock.release();
//Not a partial download. Do stuff.
}
} catch (Exception e) {
e.printStackTrace();
} finally {
test.close();
}
}
不幸的是,我读到文件在创建FileOutputStream时被截断(0字节)。
我将其设置为追加,但锁定似乎没有生效,所有内容似乎都未锁定(完全下载)
有没有其他方法可以检查当前是否对文件应用了写锁定,或者我在这里使用了错误的方法?此外,有没有一种方法可以从ADB终端或Eclipse调试文件锁?