私の仕事は、ファイルのリストを tar することであり、この tar は .gz ファイルに保存する必要があります。.tar ファイルの作成には成功しましたが、次のステップである .gz ファイルの作成時に問題が発生しました。内部にtarを含む.gzファイルを作成した後、拡張子なしのファイル形式に変換されます。
.tar ファイルを生成する Java コード
FileSystem fs = FileSystems.getDefault();
OutputStream tar_output = new FileOutputStream(fs.getPath(hardLink.toString(), tarFileName + ".tar")
.toFile());
ArchiveOutputStream my_tar_ball = new ArchiveStreamFactory().createArchiveOutputStream(
ArchiveStreamFactory.TAR, tar_output);
Path p = null;
TarArchiveEntry tar_file = null;
for (String list : certFileList) {
p = fs.getPath(hardLink.toString(), list);
tar_file = new TarArchiveEntry(p.getFileName().toString());
tar_file.setSize(p.toFile().length());
my_tar_ball.putArchiveEntry(tar_file);
IOUtils.copy(new FileInputStream(p.toFile()), my_tar_ball);
my_tar_ball.closeArchiveEntry();
}
gzipIt 関数を呼び出す
gzipIt(hardLink.toString() + "/" + tarFileName + ".gz", hardLink.toString() + "/" + tarFileName + ".tar");
.gz ファイルを生成する Java コード
public static void gzipIt(String outputDir, String sourceFile) {
byte[] buffer = new byte[1024];
try {
FileOutputStream fos = new FileOutputStream(new File(outputDir));
GZIPOutputStream gzos = new GZIPOutputStream(fos);
FileInputStream in = new FileInputStream(sourceFile);
int len;
while ((len = in.read(buffer)) > 0) {
gzos.write(buffer, 0, len);
}
in.close();
gzos.finish();
gzos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
誰でも問題を解決するのを手伝ってくれませんか。
よろしくサイ