【发布时间】:2012-10-04 02:58:26
【问题描述】:
我最近在我的下载器异步任务中添加了文件锁:
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 字节)。
我设置为append,但是锁好像没有生效,好像都解锁了(完全下载)
是否有另一种方法可以检查当前是否对文件应用了写锁,或者我在这里使用了错误的方法?另外,有没有办法从 ADB 终端或 Eclipse 调试文件锁?
【问题讨论】:
标签: java android multithreading fileoutputstream filelock