2016-11-29 58 views
1

这是我的方法来压缩文件到压缩文件:如何锁定文件的另一个线程

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 conatains所有文件层次(文件夹和文件)

我想,以防止不同的线程进入压缩一个目的地在同一时间。

尝试使用:

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

,但它似乎并没有对大家有所帮助。我怎么解决这个问题?

回答

1

您正试图锁定文件与其他线程,而不是其他进程,这正是文件锁定不能执行的操作。看到Javadoc。您需要使用同步或信号量。

相关问题