什么是压缩文件? 简单的说,就是经过压缩软件压缩的文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成6个0 的写法60,来减少该文件的空间。 ■怎么压缩文件? 首先要安装压缩软件,现在比较流行的是WinRAR“一种高效快速的文件压缩软件(中文版)”。 其次是建立一个压缩包:选择你要制作成压缩包的文件或文件夹,当然你也可也多选,方法同资源管理器,也就是按住Ctrl或Shift再选择文件(文件夹)。 选取完毕之后,就可以单击工具栏上的“压缩”按钮,在这里你可以选择压缩格式:RAR和ZIP。 如果你想得到较大的压缩率,建议选择RAR格式。 各个选项选择好以后,单击确定按钮就开始制作压缩包了,非常方便。有时候大家会遇到这个问题,就是你在一个论坛里要上传一些文件压缩包,压缩包大小有3M,但是论坛限制会员上传大小只有2M,怎么办呢? 其实办法很简单,就是在你压缩这个文件时,分成几个带分卷压缩包,分卷包大小设置为2M即可,比如:原来文件名为123.rar(3M),压缩成分卷包后为123.part1.rar(2M)与123.part2.rar(1M)两个文件,这样你就可以上传了。 具体方法如下: 1、在要压缩的文件上点右键 2、添加到压缩文件.... 3、选常规 4、压缩方式选最好 5、批定压缩分卷大小(按字节计算),1M = 1024K,1K = 1024字节,填写数字即可 当你下载了带有分卷的压缩包后,如何解压文件呢? 具体方法如下: 1、把所有的压缩分卷全部下载完整 2、所有分卷必须在同一个文件夹内 3、然后双击解压第一个分卷,即可 注:分卷解压的文件必须是连续的,若分卷未下载完整,则解压时自然会提示需要下一压缩分卷
‘贰’ 如何使用java压缩文件夹成为zip包
在JDK中有一个zip工具类:
java.util.zip Provides classes for reading and writing the standard ZIP and
GZIP file formats.
使用此类可以将文件夹或者多个文件进行打包压缩操作。
在使用之前先了解关键方法:
ZipEntry(String name) Creates a new zip entry with the specified name.
使用ZipEntry的构造方法可以创建一个zip压缩文件包的实例,然后通过ZipOutputStream将待压缩的文件以流的形式写进该压缩包中。具体实现代码如下:
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipOutputStream;
/**
*将文件夹下面的文件
*打包成zip压缩文件
*
*@authoradmin
*
*/
publicfinalclassFileToZip{
privateFileToZip(){}
/**
*将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下
*@paramsourceFilePath:待压缩的文件路径
*@paramzipFilePath:压缩后存放路径
*@paramfileName:压缩后文件的名称
*@return
*/
publicstaticbooleanfileToZip(StringsourceFilePath,StringzipFilePath,StringfileName){
booleanflag=false;
FilesourceFile=newFile(sourceFilePath);
FileInputStreamfis=null;
BufferedInputStreambis=null;
FileOutputStreamfos=null;
ZipOutputStreamzos=null;
if(sourceFile.exists()==false){
System.out.println("待压缩的文件目录:"+sourceFilePath+"不存在.");
}else{
try{
FilezipFile=newFile(zipFilePath+"/"+fileName+".zip");
if(zipFile.exists()){
System.out.println(zipFilePath+"目录下存在名字为:"+fileName+".zip"+"打包文件.");
}else{
File[]sourceFiles=sourceFile.listFiles();
if(null==sourceFiles||sourceFiles.length<1){
System.out.println("待压缩的文件目录:"+sourceFilePath+"里面不存在文件,无需压缩.");
}else{
fos=newFileOutputStream(zipFile);
zos=newZipOutputStream(newBufferedOutputStream(fos));
byte[]bufs=newbyte[1024*10];
for(inti=0;i<sourceFiles.length;i++){
//创建ZIP实体,并添加进压缩包
ZipEntryzipEntry=newZipEntry(sourceFiles[i].getName());
zos.putNextEntry(zipEntry);
//读取待压缩的文件并写进压缩包里
fis=newFileInputStream(sourceFiles[i]);
bis=newBufferedInputStream(fis,1024*10);
intread=0;
while((read=bis.read(bufs,0,1024*10))!=-1){
zos.write(bufs,0,read);
}
}
flag=true;
}
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}finally{
//关闭流
try{
if(null!=bis)bis.close();
if(null!=zos)zos.close();
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}
}
}
returnflag;
}
publicstaticvoidmain(String[]args){
StringsourceFilePath="D:\TestFile";
StringzipFilePath="D:\tmp";
StringfileName="12700153file";
booleanflag=FileToZip.fileToZip(sourceFilePath,zipFilePath,fileName);
if(flag){
System.out.println("文件打包成功!");
}else{
System.out.println("文件打包失败!");
}
}
}
‘叁’ 如何在java中执行zip压缩命令
publicclassZipFile{
publicstaticvoidmain(String[]args)throwsException{
//zip-rqq.zipWEB-INF-x'*.DS_Store'
ZipFilezipFile=newZipFile();
zipFile.start("zip-rqq.zipWEB-INF-x'*.DS_Store'");
}
privatesynchronizedvoidstart(Stringcmd)throwsException{
Processpro=null;
pro=Runtime.getRuntime().exec(cmd);
newDoOutput(pro.getInputStream()).start();
newDoOutput(pro.getErrorStream()).start();
}
{
publicInputStreamis;
publicDoOutput(InputStreamis){
this.is=is;
}
publicvoidrun(){
BufferedReaderbr=newBufferedReader(newInputStreamReader(this.is));
Stringstr=null;
StringBuildersb=newStringBuilder();
try{
while((str=br.readLine())!=null){
sb.append(str+" ");
}
System.out.println(sb.toString());
}catch(Exceptione){
e.printStackTrace();
}finally{
if(br!=null){
try{
br.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}
}
}
}
‘肆’ java怎么实现zip分卷压缩有关问题
直接用java 调用wondows 的cmd 就行了, 至于这个具体的命令 是7-zip提供的,这个需要去看看7-zip的文档.
‘伍’ RAR与ZIP的区别
zip将目录表放在压缩包的最后,其中列出了包中每一个文件的属性(文件名、文件大小等)和其在包中存放的位置,如果需要直接访问包中的某个文件,可以根据这个目录直接进行定位。RAR没有目录表,所有文件按照顺序依次压缩存放祥敏物。这样导致的区别就是:随机访问文件时,zip的速度要快于rar,如果赶上文件在压缩包的最后且包内文件很多,rar的速度就显得很慢了(其实也不过几秒钟)。但是顺序访问时,rar的速度就要快于zip,因为不用反复去查目录。
分卷压缩
在DOS时代,由于软盘容量很小,因此分卷压缩是很必要的。但是由于zip将文件目录表放在压缩包的最后,导致每解压一张盘,都要先将最后一张盘插进去一次读取目录,而且如果最后一张盘损坏,所有文件都无法被解压。而rar由于没有文件目录表,就没有这个问题。到了windows时代,zip则彻底放弃了分卷压缩功能。
固实压缩方式
固实压缩文件是rar的一种特殊压缩方式存储的压缩文件,它把压缩文件中的全部文件都当成一个连续数据流来看待,从而找到更多的冗余信息(Flash文件也采用了类似的技术)。压缩前会对文件进行重新排序,将拥有相似结构的文件排列在一起。这样对于大量类似的文件,压缩比有显着的提高。但是缺点也很明显的:随机解压任何一个文件都要从压缩包头部开始分析,速度较慢;对已有固实压缩包更新时速度较慢;包中任何一个文件损坏后,都不能解压出全部谨液文件。
安全性
zip和rar格式中均提供了密码保护功能,但是密码保护的安全强度不同。由于zip格式开放、代码开源,因此当出现“已知明文攻击法”之后,对zip的挑战很大。rar为了避免通过猜测文件名来使用“已知明文攻击法”,增加了“加密文件名”选项,并且使用了 AES-128 标准加密。
在数据安全性方面,rar支持“恢复记录”,在介质物理损坏或其它原因造成数据丢失时,可以按照“恢复记录”尝试对数据进行修复,而zip格式无恢复记录。ZIP 格式使用私有加密算法。 RAR 压缩文件使用更强大的 AES-128 标准加密。如果你需要加密重要的信息,选择 RAR 压缩文件格式会比较好一些。为了确实的安全性,密码长度请最少要 8 个字符。不要使用任何语言的单词作为密码,最好是任意的随机组合字符和数字,并且要注意密码的大小写。请记住,如果你遗失你的密码,你将无法取出加密的文件,就算是 WinRAR 的作者本身也无法解压加密过的文件。
开放性
zip格式拿伏公开、代码开源,而rar完全保密,不利于跨平台。java的jar包内核来自zip算法,而png格式的出现是为了避免gif格式的专利费,所以也采用了zip核心,压缩效果比gif的lzw更强。
‘陆’ java gzipoutputstream压缩比例大概是多少
It is my decision,It is my life.
JAVA对字符串的压缩与解压缩
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipUtils {
/**
* 使用gzip进行压缩
*/
public static String gzip(String primStr) {
if (primStr == null || primStr.length() == 0) {
return primStr;
}
‘柒’ 使用java自带zip或者压缩工具压缩文件,影响文件压缩率的因素有哪些
我们通常都是用7-Zip,WinRar或好压其实几乎
7z压缩率是比较高的winrar更通用
说好压压缩比7z格式图片预览几乎不用解压,可以看到图片
‘捌’ java如何直接解压zip格式二进制流
Java代码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
class ZipTest {
// 压缩
public static void zip(String zipFileName, String inputFile)
throws Exception {
File f = new File(inputFile);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName));
zip(out, f, f.getName());
System.out.println("zip done");
out.close();
‘玖’ java 压缩比
ZipOutputStream
里面有
setMethodpublic void setMethod(int method)设置用于后续条目的默认压缩方法。只要没有为单个 ZIP 文件条目指定压缩方法,并且其初始设置为 DEFLATED 时,就使用此默认值。
参数:method - 默认压缩方法
抛出:IllegalArgumentException - 如果指定的压缩方法无效
setLevelpublic void setLevel(int level)为后续的 DEFLATED 条目设置压缩级别。默认设置是 DEFAULT_COMPRESSION。
参数:level - 压缩级别 (0-9)
抛出:IllegalArgumentException - 如果压缩级别无效