Gzip解压
public class GzipUploadServiceImpl implements UploadService {
@Override
public boolean isOwn(FileType fileType) {
return FileType.GZ == fileType;
}
@Override
public void uploadFile(String targetPath, File file, int depth, boolean isReservedDir) throws IOException, RarException {
if (file.getName().endsWith(TAR_GZ)) {
new TarGzUploadServiceImpl().uploadFile(targetPath, file, depth, isReservedDir);
return;
}
try (InputStream is = Files.newInputStream(file.toPath());
GzipCompressorInputStream gzip = new GzipCompressorInputStream(is)) {
// 获取文件名
String fileName = gzip.getMetaData().getFilename();
if (fileName == null) {
String name = file.getName();
fileName = name.substring(0, name.lastIndexOf(Constants.DOT));
fileName = fileName.substring(fileName.lastIndexOf(File.separator) + 1);
}
File destFile = FileUtils.getFile(targetPath, fileName);
FileUtils.copyInputStreamToFile(gzip, destFile);
} finally {
new ProjectUtils().deleteTemFile(file);
}
}
}
Rar5解压
public class Rar5UploadServiceImpl implements UploadService {
@Override
public boolean isOwn(FileType fileType) {
return FileType.RAR5 == fileType;
}
@Override
public void uploadFile(String targetPath, File file, int count, boolean isReservedDir) throws IOException, RarException {
ProjectUtils projectUtils = new ProjectUtils();
if (count == Constants.MAX_DEPTH) {
projectUtils.deleteTemFile(file);
return;
}
//解压缩至指定目录outDir
ExtractCallback.unrar5(file.getCanonicalPath(), targetPath, isReservedDir, count);
projectUtils.deleteTemFile(file);
}
}
具体实现Rar5的解压
import com.github.junrar.exception.RarException;
import net.sf.sevenzipjbinding.ExtractAskMode;
import net.sf.sevenzipjbinding.ExtractOperationResult;
import net.sf.sevenzipjbinding.IArchiveExtractCallback;
import net.sf.sevenzipjbinding.IInArchive;
import net.sf.sevenzipjbinding.ISequentialOutStream;
import net.sf.sevenzipjbinding.PropID;
import net.sf.sevenzipjbinding.SevenZip;
import net.sf.sevenzipjbinding.SevenZipException;
import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.