Web サービスはbyte[]
、zip ファイルからの を想定しています。
Javaで圧縮したフォルダにいくつかのファイルがありbyte[]
、このzipファイルから取得します。
これは必要byte[]
ですか、それともフォルダから直接作成できますか?
フォルダはファイルの集まりです。コンテナです。そもそも取得するバイトストリームがありません。
一方、ZIP (または任意のアーカイブ)はファイルです。さまざまなファイルに関する情報は、ZIP ファイル自体に保存されます。
ただし、フォルダーの内容を反復処理し、バイト配列を作成してから使用することができます (とにかく、ZIP の作成中にそれを行っています)。
ファイルが非常に大きくならない限り、このようなものを使用すると、書き込みを行わなくてもやりたいことを実行できると思います。
String[] sourceFiles = { "C:/file1", "C:/file2" };
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zout = new ZipOutputStream(baos);
byte[] buffer = new byte[4096];
for (int i = 0; i < sourceFiles.length; i++)
{
FileInputStream fin = new FileInputStream(sourceFiles[i]);
zout.putNextEntry(new ZipEntry(sourceFiles[i]));
int length;
while ((length = fin.read(buffer)) > 0)
{
zout.write(buffer, 0, length);
}
zout.closeEntry();
fin.close();
}
zout.close();
byte[] bytes = baos.toByteArray();