当前位置:首页 » 文件管理 » 流解压缩

流解压缩

发布时间: 2023-10-26 07:42:52

A. 你好,最近我也遇到用java压缩解压,向你咨询下你的解决方案什么,你是怎么用文件流方式去压缩

package com.onewaveinc.cwds.commons.utils;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* @author fz 2010-7-30
* @Description 把指定文件夹下的所有文件压缩为指定文件夹下指定zip文件;把指定文件夹下的zip文件解压到指定目录下
*/
public class ZipUtils {

private static final Logger logger = LoggerFactory.getLogger(ZipUtils.class);

private static final String SEPARATE = "/";

/**
* @Author fz 2010-7-30
* @param sourceDir 待压缩目录
* @param zipFile 压缩文件名称
* @throws Exception
* @Description 把sourceDir目录下的所有文件进行zip格式的压缩,保存为指定zip文件
*/
public static void zip(String sourceDir, String zipFile) throws Exception {
OutputStream os = null;
// try {
os = new FileOutputStream(zipFile);
BufferedOutputStream bos = new BufferedOutputStream(os);
ZipOutputStream zos = new ZipOutputStream(bos);
File file = new File(sourceDir);
String basePath = null;

if (file.isDirectory()) {
basePath = file.getPath();
} else {
// 直接压缩单个文件时,取父目录
basePath = file.getParent();
}
zipFile(file, basePath, zos);
zos.closeEntry();
zos.close();
// } catch (Exception e) {
// logger.error("压缩文件或文件夹" + sourceDir + "时发生异常");
// e.printStackTrace();
// }

}

/**
* @Author fz 2010-7-30
* @param source 源文件
* @param basePath 待压缩文件根目录
* @param zos 文件压缩流
* @Description 执行文件压缩成zip文件
*/
private static void zipFile(File source, String basePath, ZipOutputStream zos) {
File[] files = new File[0];
if (source.isDirectory()) {
files = source.listFiles();
} else {
files = new File[1];
files[0] = source;
}

//存相对路径(相对于待压缩的根目录)
String pathName = null;
byte[] buf = new byte[1024];
int length = 0;
try {
for (File file : files) {
if (file.isDirectory()) {
pathName = file.getPath().substring(basePath.length() + 1) + SEPARATE;
zos.putNextEntry(new ZipEntry(pathName));
zipFile(file, basePath, zos);
} else {
pathName = file.getPath().substring(basePath.length() + 1);
InputStream is = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
zos.putNextEntry(new ZipEntry(pathName));
while ((length = bis.read(buf)) > 0) {
zos.write(buf, 0, length);
}
is.close();
}
}
} catch (Exception e) {
logger.error("压缩文件" + source + "时发生异常");
e.printStackTrace();
}
}

/**
* @Author fz 2010-7-30
* @param zipfile 待解压文件
* @param destDir 解压文件存储目录
* @throws Exception
* @Description 解压zip文件,只能解压zip文件
*/
@SuppressWarnings("unchecked")
public static void unZip(String zipfile, String destDir) throws Exception {
destDir = destDir.endsWith(SEPARATE) ? destDir : destDir + SEPARATE;
byte b[] = new byte[1024];
int length;
ZipFile zipFile;
// try {
zipFile = new ZipFile(new File(zipfile));
Enumeration enumeration = zipFile.getEntries();
ZipEntry zipEntry = null;
while (enumeration.hasMoreElements()) {
zipEntry = (ZipEntry) enumeration.nextElement();
File loadFile = new File(destDir + zipEntry.getName());
if (zipEntry.isDirectory()) {
loadFile.mkdirs();
} else {
if (!loadFile.getParentFile().exists()) {
loadFile.getParentFile().mkdirs();
}
OutputStream outputStream = new FileOutputStream(loadFile);
InputStream inputStream = zipFile.getInputStream(zipEntry);
while ((length = inputStream.read(b)) > 0)
outputStream.write(b, 0, length);
outputStream.close();
inputStream.close();
}
}
zipFile.close();
// } catch (IOException e) {
// logger.error("解压文件" + zipfile + "时发生异常");
// e.printStackTrace();
// }
}

}

B. 电脑一般用什么解压软件

常用的解压软件有两种: winRAR、360压缩

1、WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在 Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从 Internet 上下载的 RAR、ZIP及其它类型文件,并且可以新建 RAR 及 ZIP 格式等的压缩类文件。

2、360压缩: 360压缩是新一代的压碧尺缩软件,360压缩支持解压主流的rar、zip、7z、iso等多达40种压缩文件。360压缩内置云安全引擎,可以检测木马,更安全。大幅简化了传统软件的繁琐操作,还改进了超过20项的使用细节,拥有全新的界面。

3、7-Zip

7-Zip完全开源免费,它的7z压缩格式是目前数据压缩率最高的格式,没有之一,虽然用WinRAR的人很多,zip和rar格式的文件也很常见,但rar与7z相比压缩率是相当低的。通常情况下,7-zip可以把zip文件最高再压缩10%的体积。

4、BandiZip

BandiZip是一款轻量级、快速且整合程度较高的解压缩软件。bandzip具备非常快速的压缩与解压缩算法,支持鼠标拖拽操作以及多线程操作。而且bandzip还支持目前主流皮慧历的解压缩文件格式,包括ZIP、7Z、RAR等。

5、快压

自己压缩自己解压的一款,使用快压解压不是快压压缩的文件很有可能出现文件损坏,慎重使用。

快压软件是一款免费、方便、快速的压缩和解压缩利器,拥有一流的压缩技术,是国内第一款具备自主压缩格式的软件,快压自身的压缩格式 kz 具有超大的压缩比和超快的压缩解压速度,同时,快压还兼容 rar,zip 和 7z 等40余种压缩文件!

(2)流解压缩扩展阅读

解压缩(Decompression)是压缩的反过程,是将一个通过软件压缩的文档、文件等各种东西恢复到压缩之前的样子。解压文件的方法是:右击图标-解压文件-确定(前提为安装过相关解压软件并关联过右键菜单),解压完成以后就会在压缩文件所在目录出现一个新的文件,这个文件就是你解压出来的文件,但其也有可能不是一个文件,是由多个文件组成的东西。

有损压缩和无损压缩

在上文中讨论的压缩类型称为无损压缩,因为您重新创建的文件与原始文件完全相同。所有无损压缩都基于这样一种理念:将文件变为“较小”的形式以利于传输或存储,并在另一方收到它后复原以便重新使用它。

有损压缩则与此大不相同。这些程序直接去除“不必要”的信息,对文件进行剪裁以使它变得更小。这种类型的压缩大量应用于减小位图图像的文燃搜件大小,因为位图图像的体积通常非常庞大。为了了解有损压缩的工作原理,让我们看看你的计算机如何对一张扫描的照片进行压缩。

对于此类文件,无损压缩程序的压缩率通常不高。尽管图片的大部分看起来都是相同的——例如,整个天空都是蓝色的——但是大部分像素之间都存在微小的差异。为了使图片变得更小同时不降低其分辨率,您必须更改某些像素的颜色值。如果图片中包含大量的蓝色天空,程序会挑选一种能够用于所有像素的蓝色。然后,程序重写该文件,所有天空像素的值都使用此信息。

如果压缩方案选择得当,您不会注意到任何变化,但是文件大小会显着减小。 当然,对于有损压缩,在文件压缩后您无法将其复原成原始文件的样子。您必须接受压缩程序对原始文件的重新解释。因此,如果需要完全重现原来的内容(例如软件应用程序、数据库和总统就职演说),则不应该使用这种压缩形式。

C. 解压缩是什么意思

解压缩,计算机术语,就是将一个通过软件压缩的文档、文件等各种东西恢复到压缩之前的样子,这种形式以利于传输或存储。其原理就是利用压缩软件把二进制信息中相同的字符串以特殊字符标记来达到压缩的目。

1、在360安全卫士里,找到软件管家,下载360压缩软件。

(3)流解压缩扩展阅读:

1、手机网络浏览器不具有解压缩功能,如果想要在手机上查看压缩文件,可以下载手机版本的解压缩软件,比如RAR for Android、文件全能王等等。

2、最受欢迎的压缩软件RAR for Android,RAR是来自RARLAB的官方版本,支持创建RAR和ZIP,

3、解压RAR, RAR5, ZIP, TAR, GZ, BZ2, XZ, 7z, ISO, ARJ,支持ZIP和RAR的修复,基准测试与WinRAR兼容,支持恢复记录,恢复卷,固实压缩,多核压缩。

4、下载的压缩软件--文件全能王,对国人永久免费,千万android机友首选文件全能王,强大的文件传输能力

5、通过浏览器即实现跨三平台文件传输(android、苹果、电脑,通过WiFi或自建热点零流量飞速妙传各类文件。

D. 解压软件哪个好用免费

解压软件比较好用的有:WinRAR、360压缩、7-Zip、BandiZip、快压等。

1、WinRAR

WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。

该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从 Internet 上下载的RAR、ZIP及其它类型文件,并且可以新建 RAR 及 ZIP 格式等的压缩类文件。从5.60版开始,WinRAR启用了新的图标,但用户仍可以通过官网提供的主题包换回原版风格的图标。

热点内容
算法是步骤 发布:2025-01-23 01:47:22 浏览:237
ip访问控制实验 发布:2025-01-23 01:41:51 浏览:105
crv20万能落地什么配置 发布:2025-01-23 01:35:33 浏览:172
s10手机怎么查配置 发布:2025-01-23 01:34:48 浏览:890
九阴真经3d免费脚本 发布:2025-01-23 01:33:47 浏览:686
gcc编译分为哪几个阶段 发布:2025-01-23 01:33:45 浏览:806
战地5怎么看哪个服务器 发布:2025-01-23 01:33:07 浏览:367
首选域名服务器怎么设置 发布:2025-01-23 01:32:18 浏览:156
android手机代理 发布:2025-01-23 01:28:42 浏览:113
sdt编译 发布:2025-01-23 01:28:37 浏览:951