新手求教,关于java压缩文件的问题

问题描述

新手求教,关于java压缩文件的问题
import java.io.*;
import java.util.zip.*;
public class Myzip {
private void zip(ZipOutputStream outFile fString base) throws Exception{
if(f.isDirectory()){
File f1[]=f.listFiles();
out.putNextEntry(new ZipEntry(base+""/""));
base=base.length()==0?"""":base+""/"";
for(int i=0;i<f1.length;i++){
zip(outf1[i]base+f1[i]);
}
}else{
out.putNextEntry(new ZipEntry(base));
FileInputStream in=new FileInputStream(f);
System.out.println(base);
int b;
while((b=in.read())!=-1){
out.write(b);
}
in.close();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
Myzip z=new Myzip();
ZipOutputStream out=new ZipOutputStream(new FileOutputStream(""hello.zip""));
z.zip(outnew File(""hello"")");
System.out.println(""压缩完成"");
}catch(Exception e){

    }}

}
这个程序为什么不能实现压缩文件?

另外,
out.putNextEntry(new ZipEntry(base+""/""));
base=base.length()==0?"""":base+""/"";
这两句是啥意思啊。。
base的作用是?

新手求教大神!非常感谢

附上书里的源代码:
import java.io.*;
import java.util.zip.*;

public class MyZip { // 创建类
private void zip(String zipFileName File inputFile) throws Exception {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName)); // 创建ZipOutputStream类对象
zip(out inputFile"); // 调用方法
System.out.println(""压缩中…""); // 输出信息
out.close(); // 将流关闭
}

private void zip(ZipOutputStream out File f String base)        throws Exception { // 方法重载    if (f.isDirectory()) { // 测试此抽象路径名表示的文件是否是一个目录        File[] fl = f.listFiles(); // 获取路径数组        out.putNextEntry(new ZipEntry(base + ""/"")); // 写入此目录的entry        base = base.length() == 0 ? """" : base + ""/""; // 判断参数是否为空        for (int i = 0; i < fl.length; i++) { // 循环遍历数组中文件            zip(out fl[i] base + fl[i]);        }    } else {        out.putNextEntry(new ZipEntry(base)); // 创建新的进入点        // 创建FileInputStream对象        FileInputStream in = new FileInputStream(f);        int b; // 定义int型变量        System.out.println(base);        while ((b = in.read()) != -1) { // 如果没有到达流的尾部            out.write(b); // 将字节写入当前ZIP条目        }        in.close(); // 关闭流    }}public static void main(String[] temp) { // 主方法    MyZip book = new MyZip(); // 创建本例对象    try {        // 调用方法,参数为压缩后文件与要压缩文件        book.zip(""hello.zip"" new File(""src""));        System.out.println(""压缩完成""); // 输出信息    } catch (Exception ex) {        ex.printStackTrace();    }}

}

解决方案

然后你的这个类是没有问题的
只是直接调报异常了
因为z.zip(outnew File(""hello"")");这里没找到这个文件
你也没有处理没找到文件的情况

        z.zip(out new File(""e:hello.txt"")/"");

我测了一遍 只要保证路径下文件存在就没有问题

解决方案二:
java压缩文件,中文问题
java中压缩文件
java压缩文件

解决方案三:
base=base.length()==0?"""":base+""/""

等价于

if(base.length()==0){
base="""";
}else{
base=base+""/"" ;
}

时间: 2024-09-30 17:25:27

新手求教,关于java压缩文件的问题的相关文章

java压缩文件

java的GZIP接口非常简单,所以如果只有单个数据流需要压缩(而不是一系列不同的数据),那么它就可能是最适当选择.下面是对单个文件进行压缩的例子:   //: GZIPcompress.java // Uses Java 1.1 GZIP compression to compress // a file whose name is passed on the command // line. import java.io.*; import java.util.zip.*; public c

java-本人新手求教 关于Java内部类的问题 请大神看图

问题描述 本人新手求教 关于Java内部类的问题 请大神看图 解决方案 就是将 entry 这个对象 加入到 entrys这个数组中去 , 每次夹的时候 都会 count 加1 解决方案二: 这个呢也不是内部类的问题,,就是entrys数组中放入entry对象,,count++就是count先赋值再自增 解决方案三: 将实例entry赋值给entry数组.具体不知道你具体想问什么? 解决方案四: 这个不是内部类的问题,是在一个类中定义了方法,然后把entry 的值赋给entrys 数组j进行前+

遍历-[新手求教]ubuntu下新建文件夹里面有什么么?

问题描述 [新手求教]ubuntu下新建文件夹里面有什么么? 我在做一个删除文件夹中所有内容的c++程序,使用遍历来删除文件夹中内容,明明是空文件夹,为什么会显示有一个"." 解决方案 每个文件夹都有一个.一个..一个指向当前文件夹,一个指向上一层.之所以不能删除,看看是不是有隐藏文件或者权限不够. 解决方案二: 你用 ls -a 就能看到当前目录下其实有一个 "." 一个 ".." ."." 是当前目录的意思.你可以 cd

新手求教。java next()

问题描述 新手求教.java next() 各位好,有个问题请教一下.代码: public class hello{ public static void main(String[] args) { Scanner input1=new Scanner(System.in); label1: while(true){ System.out.println("请选择查询方法:a.图书信息 b.图书序号"); String choose=input1.next(); if(choose =

java压缩文件和下载图片示例_java

本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>项目的主页</title> </head> <body> <h2>主页

Java压缩文件ZIP实例代码_java

提示:java.util.zipoutputstream         java API压缩为zip文件 代码: 复制代码 代码如下: package com.gaoqi.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.z

用java压缩文件示例(没有中文问题)

示例|问题|压缩|中文 这本是别人的东西,我只是修改了中文问题.在这个基础上改一下就可以压缩多个文件和目录,甚至可以写一个winzip之类的东东哦,有兴趣的可以研究一下.import java.io.*;import java.util.zip.*;  /**   * @version Version 1.3   */  public class w0514{       public static void main(String[] args){          try{         

Java压缩文件/目录成ZIP包最新技巧

使用java自带的类java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的名件/目录命名,如果有中文名,那么打包就会失败.本人经过一段时间的摸索和实践,发现在一般的Ant.jar类库中也有zip类,import org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,实在不行去下载个tomcat5.X,里面也有ant.jar,本人经过测试,可以使用. 例子如下: import java.io

新手求教 谢谢-java新手今天求教 今天刚开始接触java

问题描述 java新手今天求教 今天刚开始接触java public class HolleWorld { public static void main (String[]args){ system.out.println("这是我第一个java程序") { } 这三句的注释, 谢谢 解决方案 今天开始写第一篇java相关的博客 解决方案二: public class HolleWorld { //定义了一个叫HolleWorld的类(Hello还拼错了) public static