如何锁定其他线程的文件



这是我将文件压缩到存档中的方法:

public void addFilesToArchive(File source, File destination) throws 
IOException, ArchiveException {
    try (FileOutputStream archiveStream = new FileOutputStream(destination);
          ArchiveOutputStream archive = new ArchiveStreamFactory()
                  .createArchiveOutputStream(getType(), archiveStream)) {
        updateSourceFolder(source);
        generateFileAndFolderList(source);
        for (String entryName : fileList) {
            ArchiveEntry entry = getEntry(entryName);
            archive.putArchiveEntry(entry);
            archive.closeArchiveEntry();
        }
    }
}

filelist conatinains conatins所有文件层次结构(文件夹和文件)

我想防止同时从不同线程压缩到一个目的地。

尝试使用:

FileChannel channel = archiveStream.getChannel();
channel.lock();

,但似乎并没有帮助。如何解决此问题?

您正在尝试使用其他线程,而不是其他进程,这正是文件锁定不做的。参见Javadoc。您需要使用同步或信号量。

相关内容

  • 没有找到相关文章

最新更新