java中zip压缩输入输出流的问题,ZipEntry()方法里的参数到底什么意思

java Zip压缩输入输出流问题~

out.putNextEntry(new ZipEntry(base + "/"));// 写入此目录的Entry 这句应该是将文件压入zip文件的根目录下
base = base.length() == 0 ? "" : base + "/";// 判断参数是否为空
这句子是判断写入压缩文件的目录,默认写入压缩文件的根目录
有hello这个文件夹应该是你src中有这个文件吧

ZipEntry 类是java.util.zip包下的一个类,
ZipEntry 类用于表示 ZIP 文件条目。
利用这个类压缩和解压zip文件
具体压缩的例子如下:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * 压缩程序 * @author young * */public class SingleFileZip {public static void main(String[] args) {File file = new File("e:/test.txt");FileInputStream fis = null;ZipOutputStream zos = null;try {fis = new FileInputStream(file);zos = new ZipOutputStream(new FileOutputStream("e:/my.zip"));// 创建压缩文件中的条目ZipEntry entry = new ZipEntry(file.getName());// 将创建好的条目加入到压缩文件中zos.putNextEntry(entry);// 写入当前条目所对应的具体内容byte[] buff = new byte[1024];int len = 0;while ((len = fis.read(buff)) != -1) {zos.write(buff, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {fis.close();zos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}解压例子如下:
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;/** * 解压程序 * @author young * */public class SingleFileUnZip {public static void main(String[] args) {FileOutputStream fos = null;ZipInputStream zis = null;InputStream is = null;try {ZipFile zf = new ZipFile("e:/my.zip");zis = new ZipInputStream(new FileInputStream("e:/my.zip"));fos = new FileOutputStream("e:/unzip.txt");// 从压缩文件中获取一个条目ZipEntry entry = zis.getNextEntry();// 获得该条目对象的数据流is = zf.getInputStream(entry);byte[] buff = new byte[1024];int len = 0;while ((len = is.read(buff)) != -1) {fos.write(buff, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {is.close();zis.close();fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

ZipEntry 用于保存一些被压缩文件的信息,如文件名,最后访问时间,最后修改时间,创建时间,文件大小,crc 校验值 等信息。

ZipEntry 具有一个带 String 类型参数的构造方法:ZipEntry(String name), name 是入口名称,就是打开压缩文件时,看到的里面的文件名称。

可以看一下它的源码,下面是部分源码:

public
class ZipEntry implements ZipConstants, Cloneable {

    String name;        // entry name
    long time = -1;     // last modification time
    FileTime mtime;     // last modification time, from extra field data
    FileTime atime;     // last access time, from extra field data
    FileTime ctime;     // creation time, from extra field data
    long crc = -1;      // crc-32 of entry data
    long size = -1;     // uncompressed size of entry data
    long csize = -1;    // compressed size of entry data
    int method = -1;    // compression method
    int flag = 0;       // general purpose flag
    byte[] extra;       // optional extra field data for entry
    String comment;     // optional comment string for entry
    
    ...
}


java中将一个文件夹下所有的文件压缩成一个文件,然后,解压到指定目录...
答:ZipOutputStream zos = new ZipOutputStream(fos);// 压缩 zip(inputDir.listFiles(), "", zos);// 关闭 zos.close();} private static void zip(File[] files, String baseFolder, ZipOutputStream zos)throws Exception { // 输入 FileInputStream fis = null;// 条目 ZipEntry entry = ...

JAVA 压缩和序列化
答:在命令行输入jar即可查看jar命令的使用方法。把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途:java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一...

java设计 ZIP格式压缩/解压系统设计
答:in.close(); //解压完成后注意关闭输入流对象 } if (out != null) { out.close(); //解压完成后注意关闭输出流对象 } } } } } catch (Exception ex) { System.out.println(ex.getMessage());} finally { zipFile.close(); //解压完成后注意关闭apache自带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;public class Zip { // 压缩 public static void zip(String zipFileName, String inputFile)throws ...

...z)组成的字符串,将连续字母压缩输出字符串,用Java实现
答:Scanner scanner = new Scanner(System.in);String str = scanner.nextLine();//dasdascasd char[] chars = str.toCharArray();char c = 0;int j = 1;for (int i = 0; i < chars.length; i++) { char b = chars[i];if (c!=b) { if (j!=1) { System.out.print(j);} ...

用JAVA里面的ZipOutputStream类中的方法`写出压缩包`并要求循环递归...
答:import java.io.DataOutputStream;import java.io.FileOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class asd { / param args / public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub ZipOutputStream zipOut =...

java多线程压缩文件
答:/** * 递归压缩文件夹 * * @param srcRootDir * 压缩文件夹根目录的子路径 * @param file * 当前递归压缩的文件或目录对象 * @param zos * 压缩文件存储对象 * @throws Exception */private static void zip(String srcRootDir, File file, ZipOutputStream zos) throws Exception {...

用于输入压缩文件格式的ZiplnputStream类所属包是( )。
答:【答案】:D D【解析】本题考查ZiplnputStream类的基本概念。压缩文件输入流都是InflatelnputStream的子类,是以字节压缩为特征的过滤流。主要有三类,应该有所了解。 ZiplnputStrearh"类在java.util.zip包中,该类用于输入以gzip格式进行压缩的文件,是对输入文件类型的一种过滤。ZiplnputStream类也在...

文本数据 用二进制zip压缩保存
答:参考下面的例子,输出可以直接用WinRAR、WinZip等软件直接打开查看内容 String binaryFile = "d:/test.zip";FileOutputStream fos = new FileOutputStream(binaryFile);ZipOutputStream zos = new ZipOutputStream(fos);zos.setMethod(ZipOutputStream.DEFLATED);zos.putNextEntry(new ZipEntry("MyFile....

java.io的Java流输入输出原理
答:Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流。 按流向分:输入流: 程序可以...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网