A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙小亚 中级黑马   /  2014-8-25 11:38  /  3342 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
我想创建一个ZipFile,总是出现这个错误:


下面是代码:
  • import java.util.zip.ZipFile;
  • public class Demo2 {
  •         public static void main(String[] args) throws Exception{
  •                 String zipFileName = "E:\\BaiduYunDownload\\银行业务调度\\01 张孝祥-7K月薪面试题破解之二_银行业务调度系统视频教程_3G之android面试经验漫谈.zip";
  •                 ZipFile zf = new ZipFile(zipFileName);
  •                 zf.close();
  •                 System.out.println("SUCCESS");
  •         }
  • }

[color=rgb(177, 8, 0) !important]复制代码


最佳答案

查看完整内容

我只是复制了我的方法。

6 个回复

倒序浏览
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.FileReader;
  8. import java.io.OutputStreamWriter;
  9. import java.io.PrintWriter;
  10. import java.util.zip.ZipEntry;
  11. import java.util.zip.ZipInputStream;

  12. /**使用Java原生态 解压方式,解压 zip 和 rar 文件。
  13. * 压缩文件夹里面保存着  2个文本文件, 提取出他们的文件信息并打印出来。
  14. *
  15. * 我实现的原理是:
  16. * ①首先使用 ZipInputStream 读取一个 zip文件。
  17. * ②遍历出他里面的文件信息(他的名字)
  18. * ③拿到他的名字以后。使用 ZipInputStream 读取 他的信息,并使用 OutputStream 将里面的文件 提取出来。
  19. * ④然后在通过 拿到的 文件 名字。通过一个方法传入名字,将他打印出来(用读取流读取,和输出流打印在屏幕)
  20. *
  21. * */
  22. public class Demo
  23. {
  24.         public static void main(String[] args) throws Exception
  25.         {
  26.                 ZipInputStream zipIs = new ZipInputStream(new BufferedInputStream(new FileInputStream("a.zip")));        //获取zip的流对象。
  27.                
  28.                 ZipEntry zipEntry;
  29.                 while((zipEntry=zipIs.getNextEntry()) != null)                //进行遍历里面的条目。
  30.                 {
  31.                         String fileName =  zipEntry.getName(); //返回一个文件名称
  32.                 //        System.out.println(zipEntry.clone());
  33.                        
  34.                         int flag ;
  35.                         byte[] data = new byte[1024];
  36.                         BufferedOutputStream bufw = new BufferedOutputStream(new FileOutputStream(fileName));        //在使用一个字节输出流将压缩文件输出
  37.                         while( (flag = zipIs.read(data))!=-1)
  38.                         {
  39.                                 bufw.write(data, 0, flag);
  40.                                 bufw.flush();
  41.                         }
  42.                        
  43.                        
  44.                         println(new File(fileName));        //通过一个方法。传入名字 将他读取出来。并打印在控制台上面

  45.                 }
  46.                
  47.                 zipIs.close();
  48.         }
  49.        
  50.        
  51.         /**既然是文本文件,就使用 Reader,和 Writer 即可
  52.          * */
  53.         public static void println(File path) throws Exception
  54.         {
  55.                 BufferedReader bufr = new BufferedReader(new FileReader(path));
  56.                 PrintWriter pr = new PrintWriter(new OutputStreamWriter(System.out),true);
  57.                 System.out.print(path.getName() + ",文件中的类容是:");
  58.                 String flag;
  59.                 while((flag=bufr.readLine())!=null)
  60.                 {
  61.                         pr.println(flag);
  62.                 }
  63.                
  64.                 bufr.close();
  65.         }

  66. }
复制代码


我只是复制了我的方法。
回复 使用道具 举报
  1. import java.util.zip.ZipFile;

  2. public class Demo2 {
  3.         
  4.         public static void main(String[] args) throws Exception{
  5.                 String zipFileName = "E:\\BaiduYunDownload\\银行业务调度\\01 张孝祥-7K月薪面试题破解之二_银行业务调度系统视频教程_3G之android面试经验漫谈.zip";
  6.                 ZipFile zf = new ZipFile(zipFileName);
  7.                 zf.close();
  8.                 System.out.println("SUCCESS");
  9.         }

  10. }
复制代码
回复 使用道具 举报

你确定有错吗  还是你那个文件不存在啊 或者格式不对之类啊  我这没问题啊
回复 使用道具 举报
我觉得你那个路径中有中文的原因,有中文后需转码??我的Java知识差不多忘了。。。

评分

参与人数 1黑马币 +2 收起 理由
孙小亚 + 2

查看全部评分

回复 使用道具 举报
或者是那个路径貌似只有E:\\这里才是双斜线,其余都为单斜线吧
回复 使用道具 举报
❤如止水之絕境 发表于 2014-8-26 10:44
或者是那个路径貌似只有E:\\这里才是双斜线,其余都为单斜线吧

不是的吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马