2016-11-29 7 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. Вам нужно использовать синхронизацию или семафоры.