2014-05-19 4 views
2

아래 코드는 일반 텍스트 파일을 압축하는 데 사용됩니다. WinRaR을 사용하여 내용을 올바르게 표시했지만 Windows Explorer에서 비어있는 상태로 열면 파일이 나열되지 않습니다. Windows 7 Enterprise (64 비트) 운영 체제를 사용하고 있습니다. Windows 탐색기에 나열되지 않은 이유는 무엇입니까? 미리 감사드립니다.Windows 탐색기로 열면 Java를 사용하여 만든 ZIP 파일이 비어 있음

File file = new File("F:\\sample.txt"); 
    byte[] buf = new byte[1024]; 
    String outFilename = "F:\\zipped_sample.zip"; 
    try { 
     ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename)); 
     FileInputStream in = new FileInputStream(file); 
     out.putNextEntry(new ZipEntry(file.toString())); 
     int len; 
     while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
     out.flush(); 
     } 
     out.closeEntry(); 
     out.close(); 
     in.close(); 
    } catch (Exception e) { 
     // log exception here 
    } 
+0

이 코드는 그대로 작동해야합니다. Windows 탐색기에 zip에 "F :"항목과 "sample.txt"항목이 있음이 표시되어야합니다 . 이 코드가 컴퓨터에서 정상적으로 완료되는지 확인하기 위해 예외를 올바르게 catch에 기록하십시오. –

+1

finally 블록에서 close()해야합니다. 또한 Java 7 인 경우 새로운 zip 파일 시스템을 사용하면 작업을 훨씬 쉽게 할 수 있습니다. – fge

+0

@OlegEstekhin 코드가 정상적으로 완료되었으므로 오류/예외가 표시되지 않습니다. 그러나 마우스 오른쪽 버튼으로 클릭 -> 모두 추출, 오류 "Windows 추출을 완료 할 수 없습니다. 압축 된 (압축 된) 폴더가 잘못되었습니다."오류가 표시됩니다. 왜 Windows 탐색기에서만 실패하는지 알지 못합니다. – Sridhar

답변

2

ZipEntry 생성자는 이름을 사용하지만 file.toString();을 수행하여 경로를 제공합니다. 시도 :

New ZipEntry(file.getName()); 

파일 이름이 전달됩니다.

0

나는 동일한 문제가 있었는데 압축 파일이 추출되지 않았고 파일 이름이 zip 파일의 폴더 이름에 비어있는 것으로 표시되었습니다. 폴더 이름이 > or < 기호로 구성되어 있으면 오류가 발생했습니다. 그래서 코드 new ZipEntry(file.toString()) 그 특정 기호로 폴더 이름을 정리하려고합니다

관련 문제