2011-11-08 9 views
1

作成しようとしているzipファイルにフォルダを置く際に問題が発生しています。パスは有効ですが、コードを実行すると、File Not Found Exceptionが表示されます。 は、ここに私のコードディレクトリからバイトを読み取ろうとしているフォルダをZip形式でJavaに配置する

String outFilename = "outfile.zip"; 
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename)); 
byte[] buf = new byte[1024]; 
File file = new File("workspace"); 
System.out.println(file.isDirectory()); 
System.out.println(file.getAbsolutePath()); 
FileInputStream in = new FileInputStream(file.getAbsolutePath()); 
out.putNextEntry(new ZipEntry(file.getAbsolutePath())); 
int len; 
while ((len = in.read(buf)) > 0) { 
out.write(buf, 0, len); 
} 

out.closeEntry(); 
in.close(); 
+0

空のフォルダを1つ追加しようとしていますか、またはすべてのファイルを含むフォルダを再帰的に追加しようとしていますか? –

答えて

1

です。それはそのようには機能しません。例外はそれほど多くも言います。

ディレクトリを追加して、各ファイルをディレクトリに追加する必要があります。ファイルパスを使用する場合は、ディレクトリを明示的に追加する必要はありません。

私は非常にジップエントリとして絶対パスを使用することを慎重にするでしょう。相対パスを使用する方が良いので、どこにでも解凍して、必要なものを上書きするリスクはありません。

+0

だから私はディレクトリ内のファイル構造を完全に再作成する必要がありますか、またはトップレベルを行うだけですか? –

+0

@JeremyKaplanディレクトリを再帰的に回転させ、各エントリを個別に追加する必要があります。しかしそれほど難しいことではありません。 –

+1

@JeremyKaplanはコピーアンドペーストの練習マンを取得します。http://www.java-examples.com/create-zip-file-directory-recursively-using-zipoutputstream-example –

関連する問題