私はHow to zip and unzip the files?でコードBを読んでいる私はいくつかのファイルを圧縮し、サーバ側でのInputStreamを作成したいと考えています、と私はコードA.最初にZIPファイルを作成せずにAndroidでZIP InputStreamを作成するにはどうすればよいですか?
を使用して、クライアント側でのInputStreamをダウンロードし、私のAndroidアプリでのWebサーバーとしてNanoHTTPDを使用最初にZIPファイルを作成せずにAndroidでZIP InputStreamを作成するにはどうすればよいですか?
私はZIPファイルを最初に作成し、ZIPファイルをFileInputStreamに変換するので、コードCは良い方法だとは思わない、私はZIP InputStreamを直接作成したいと思う!
コードA
private Response ActionDownloadSingleFile(InputStream fis) {
Response response = null;
response = newChunkedResponse(Response.Status.OK, "application/octet-stream",fis);
response.addHeader("Content-Disposition", "attachment; filename="+"my.zip");
return response;
}
コードB
public static void zip(String[] files, String zipFile) throws IOException {
BufferedInputStream origin = null;
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
try {
byte data[] = new byte[BUFFER_SIZE];
for (int i = 0; i < files.length; i++) {
FileInputStream fi = new FileInputStream(files[i]);
origin = new BufferedInputStream(fi, BUFFER_SIZE);
try {
ZipEntry entry = new ZipEntry(files[i].substring(files[i].lastIndexOf("/") + 1));
out.putNextEntry(entry);
int count;
while ((count = origin.read(data, 0, BUFFER_SIZE)) != -1) {
out.write(data, 0, count);
}
}
finally {
origin.close();
}
}
}
finally {
out.close();
}
}
コードC
*出力*ストリームをサーバーに作成する必要があります。 'ZipOutputStream'は、サーバ技術があなたに与えている出力ストリームを包んでいます。 – EJP
ありがとう! EJPに、サンプルコードを教えていただけますか? – HelloCW
ZipInputSteamはFilterInputStreamを拡張しているため、ZipInputSteamを直接作成することはできません。したがって、基本的にストリームがzipファイルを読み取る機能を提供するラッパークラスとして機能します。 '新しいZipInputStream(新しいFileInputStream(zipFile)) 'のようなものが必要でしょう –