現在のファイルの場所:C:\bearCave\bear.mp3
as のzipファイルとして表示されるように圧縮しC:\bearCave
たいbear.zip
。では、中間フォルダなしbear.zip
で見たいだけです。bear.mp3
つまり、ファイル構造は次のようにする必要があります。
bear.zip
- bear.mp3
正しい場所に生成されたファイルを圧縮することができましたC:\bearCave
。興味深いことに、その zip ファイル内に、bearCave
次のような私のファイルを含む別のフォルダーがあります。
bear.zip
- C:
- bearCave
- bear.mp3
編集 1: 考えられる手がかり、outfilename=C:\bearCave\bear.zip
これが私のコードです:
String[] filenames = new String[]{file.getPath()};
int dirEnd = (file.getPath()).indexOf(file.getName());
String fileDirectory=file.getPath().substring(0, dirEnd);
Logger.debug("dirEnd="+dirEnd);
Logger.debug("fileDir="+fileDirectory);
String outFilename = fileDirectory + (file.getName()).substring(0, ((file.getName()).length())-4) + ".zip";
Logger.debug("outFile=" + outFilename);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
for (int i=0; i<filenames.length; i++) {
FileInputStream in = new FileInputStream(filenames[i]);
// Add ZIP entry to output stream.
out.putNextEntry(new ZipEntry(filenames[i]));
// Transfer bytes from the file to the ZIP file
int len;
while ((len = in.read(buf)) > 0) {
Logger.debug("len = " + len);
out.write(buf, 0, len);
}
// Complete the entry
out.closeEntry();
in.close();
Logger.debug("entry clsoed");
}
// Complete the ZIP file
out.close();
Logger.debug("zipping complete!");
} catch (IOException e) {
Logger.error(e);
Logger.debug(e);
}
スタックトレース
fileName = bear.mp3
filePath = C:\bearCave\bear.mp3
fileDir=C:\bearCave\
outFile=C:\bearCave\bear.zip
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 1024
len = 508
entry clsoed
zipping Complete!