0

Web サービスはbyte[]、zip ファイルからの を想定しています。

Javaで圧縮したフォルダにいくつかのファイルがありbyte[]、このzipファイルから取得します。

これは必要byte[]ですか、それともフォルダから直接作成できますか?

4

2 に答える 2

1

フォルダはファイルの集まりです。コンテナです。そもそも取得するバイトストリームがありません。

一方、ZIP (または任意のアーカイブ)はファイルです。さまざまなファイルに関する情報は、ZIP ファイル自体に保存されます。

ただし、フォルダーの内容を反復処理し、バイト配列を作成してから使用することができます (とにかく、ZIP の作成中にそれを行っています)。

于 2013-02-22T12:24:14.120 に答える
1

ファイルが非常に大きくならない限り、このようなものを使用すると、書き込みを行わなくてもやりたいことを実行できると思います。

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();
于 2013-02-22T12:49:49.287 に答える