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을 보라. 동기화 또는 세마포어를 사용해야합니다.