其他分享
首页 > 其他分享> > 如何检查FileLock而不截断文件?

如何检查FileLock而不截断文件?

作者:互联网

我最近将文件锁添加到我的下载程序asynctask:

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调试文件锁?

解决方法:

这些都不会起作用.检查Javadoc.锁代表整个过程,即JVM,而不是单个线程.

标签:java,android,multithreading,filelock,fileoutputstream
来源: https://codeday.me/bug/20190625/1288181.html