text文件压缩包解析与下载

//压缩包下载

 private StreamedContent newsTemplate;
//该方法是对压缩包进行下载
    public StreamedContent getNewsTemplate() {
//对多个Text文件进行压缩
        ZipFiles(files,file);
 
        FileInputStream inputStream = null;
        try {
            inputStream = new FileInputStream(FaceContextUtil.getCurtExternalContext().getRealPath("") +
                    "/resources/pack/appData.zip");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        newsTemplate = new DefaultStreamedContent(inputStream, "", "appData.zip");
        return newsTemplate;
    }
 
 
 
 
    //压缩多个文件
    public static void ZipFiles(java.io.File[] srcfile, java.io.File zipfile) {
        byte[] buf = new byte[1024];
        try {
          //创建zip压缩包输出流
            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
            // 压缩文件
            for (int i = 0; i < srcfile.length; i++) {
            //读取数组中的文件
                FileInputStream in = new FileInputStream(srcfile[i]);
                // 将该文件名添加到zip输出
                out.putNextEntry(new ZipEntry(srcfile[i].getName()));
                // Transfer bytes from the file to the ZIP file
                //传送字节到zip包的文件中
                int len;
                while ( (len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                // Complete the entry
                //完成第一个文件的传入
                out.closeEntry();
                in.close();
            }
            // Complete the ZIP file
            //完成压缩,关闭输出流
            out.close();
            System.out.println("压缩完成.");
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
 
对zip包进行解压
Enumeration /nju:mê'rei shên/列举 计算 项目
 
 public static void unZipFiles(File zipfile,String descDir){
        try {
            ZipFile zf=new ZipFile(zipfile);
            //Enumeration接口的对象,他生成一系列元素,一次生成一个, 连续调用nextElement方法返回一系列连续元素
            //zf为所有元素,entries为Enumeration的一个元素,ertries.hasMoreElements为是否还存在下一个元素
            for(Enumeration entries=zf.entries();entries.hasMoreElements();){
                ZipEntry entry=(ZipEntry) entries.nextElement();
                String zipEntryName=entry.getName();
                InputStream in=zf.getInputStream(entry);
                OutputStream out=new FileOutputStream(descDir+zipEntryName);
                byte[] buf1=new byte[1024];
                int len;
                while((len=in.read(buf1))>0){
                    out.write(buf1,0,len);
                }
                in.close();
                out.close();
                System.out.println("解压缩完成.");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
 
 
 
不解压,直接读取压缩包文件 ,根据json转换,加入集合
    public String readZipFile(String file) throws Exception {
        list = new ArrayList<RltVip>();
        list2 = new ArrayList<RltStaR>();
        list3 = new ArrayList<RltAppDev>();
        //创建Zip压缩文件
        ZipFile zipFile = null;
        //创建Zip流
        ZipInputStream zin = null;
        InputStream in = null;
        StringBuffer sbf = null;
        try {
            zipFile = new ZipFile(file);
            in = new BufferedInputStream(new FileInputStream(file));
            zin = new ZipInputStream(in);
            ZipEntry ze;
            sbf = new StringBuffer();
            while ((ze = zin.getNextEntry()) != null) {
                Object lh = (Object) ze;
                String rv = String.valueOf(lh);
                if (ze.isDirectory()) {
                    return null;
                } else {
                    if (rv.equals("ResultVip.txt")) {
                        StringBuffer sBuffer = new StringBuffer();
                        // 这里的判断不能用ze.getSize() > 0, 当文件的大小很小时,会返回-1
                        if (ze.getSize() != 0) {
                            BufferedReader br = new BufferedReader(
                                    new InputStreamReader(
                                            zipFile.getInputStream(ze), Charset.forName("utf-8")));
                            String line;
                            while ((line = br.readLine()) != null) {
                                sBuffer.append(line + "\r\n");
                                try {
                                    RltVip vip = JsonHelper.CRAZY_GSON.fromJson(line, RltVip.class);
                                    list.add(vip);
                                } catch (Exception e) {
                                    rltVipIndex++;
                                    continue;
                                }
                            }
                            sbf.append(sBuffer);
                            br.close();
                        }
                    } else if (rv.equals("ResultStatistic.txt")) {
                        StringBuffer sBuffer = new StringBuffer();
                        // 这里的判断不能用ze.getSize() > 0, 当文件的大小很小时,会返回-1
                        if (ze.getSize() != 0) {
                            BufferedReader br = new BufferedReader(
                                    new InputStreamReader(
                                            zipFile.getInputStream(ze)));
                            String line;
                            while ((line = br.readLine()) != null) {
                                sBuffer.append(line + "\r\n");
                                try {
                                    RltStaR rltStaR1 = JsonHelper.CRAZY_GSON.fromJson(line, RltStaR.class);
                                    System.out.printf(rltStaR1.toString());
                                    list2.add(rltStaR1);
                                } catch (Exception e) {
                                    rltStatIndex++;
                                    continue;
                                }
 
                            }
                            sbf.append(sBuffer);
                            br.close();
                        }
                    } else if (rv.equals("ResultDevice.txt")) {
                        StringBuffer sBuffer = new StringBuffer();
                        // 这里的判断不能用ze.getSize() > 0, 当文件的大小很小时,会返回-1
                        if (ze.getSize() != 0) {
                            BufferedReader br = new BufferedReader(
                                    new InputStreamReader(
                                            zipFile.getInputStream(ze)));
                            String line;
                            while ((line = br.readLine()) != null) {
                                sBuffer.append(line + "\r\n");
                                try {
                                    RltAppDev rlt = JsonHelper.CRAZY_GSON.fromJson(line, RltAppDev.class);
                                    list3.add(rlt);
                                } catch (Exception e) {
                                    rltDevsIndex++;
                                    continue;
                                }
 
                            }
                            sbf.append(sBuffer);
                            br.close();
                        }
                    }
 
                }
            }
 
 
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
                if (zin != null) {
                    zin.close();
                }
                if (zipFile != null) {
                    zipFile.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sbf.toString();
    }

zip的打包与解包和包下载的更多相关文章

  1. .zip/.rar打包与解压

    Linux下如何解压.zip和.rar文件,对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1)对于zip linux下提供了zip和unzip程序,zip是 ...

  2. [Java] Java 打包成jar包 和 解压jar包

    解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...

  3. Lua学习教程之 可变參数数据打包与解包

    利用table的pack与unpack进行数据打包与解包.測试代码例如以下: print("Test table.pack()----------------"); functio ...

  4. java zip 批量打包(java.util包和apache.tools包)

    /** * 文件批量打包 * @param zipPath 打包路径 * @param files 批量文件 */ public void zipOut(String zipPath,File[] f ...

  5. lambda表达式,filter,map,reduce,curry,打包与解包和

    当然是函数式那一套黑魔法啦,且听我细细道来. lambda表达式 也就是匿名函数. 用法:lambda 参数列表 : 返回值 例: +1函数 f=lambda x:x+1 max函数(条件语句的写法如 ...

  6. MPI 打包与解包函数 MPI_Pack(),MPI_Unpack()

    ▶ MPI 中与数据打包传输有关的几个函数 ● 函数 MPI_Pack() 与 MPI_Unpack() 的原型 MPI_METHOD MPI_Pack( _In_opt_ const void* i ...

  7. CentOS7 tar打包工具 打包,解包,打包压缩,打包解压缩

    tar命令 選項與參數: -c :建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename) -t :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了: -x :解打包或解壓縮的 ...

  8. struct:二进制数据结构的打包与解包

    介绍 struct模块包括一些函数,这些函数可以完成字节串与原生Python数据类型(如数字和字符串)之间的转换 函数与Struct类 struct提供了一组处理结构值的模块级函数,另外还有一个Str ...

  9. Unix系统解压tar包时出现@LongLink错误

    Unix系统上使用tar命令解压tar包后,多了一个@LongLink的文件,并且原来的tar包解压后不完整.网上查了下,原因是AIX系统上tar命令自身的一个缺陷.解决办法:把该tar包上传到lin ...

随机推荐

  1. centos7扩展磁盘空间

    [root@hn ~]# fdisk /dev/sdb The device presents a logical sector size that is smaller thanthe physic ...

  2. Apache Thrift学习之一(入门及Java实例演示)

    目录: 概述 下载配置 基本概念 数据类型 服务端编码基本步骤 客户端编码基本步骤 数据传输协议 实例演示(java) thrift生成代码 实现接口Iface TSimpleServer服务模型 T ...

  3. C++学习35 模板中的函数式参数

    C++对模板类的支持比较灵活,模板类的参数中除了可以有类型参数,还可以有普通参数.例如: template<typename T, int N> class Demo{ }; N 是一个普 ...

  4. gc 辅助打印信息

    cat xx.xml|grep GC <jvm-arg>-XX:+PrintGCDetails</jvm-arg> <jvm-arg>-XX:+PrintGCDat ...

  5. TestNG运作报错An interanl error occurred during:"Launching first"

    备注:我建的类名就叫做“first” 解决办法:卸载掉TestNG M2E Help-->Install new software-->What is already installed? ...

  6. java 反射技术

    什么是反射?反射就是将字节码中的各种成分映射到相应的java类中来,java反射技术自JDK1.1以来就出现了,目前大多数流行的框架都采用了这种技术,可见其重要性,这篇文章将详细介绍我对java反射技 ...

  7. 中文系统下,UTF-8编码文本文件读取导致的错误

    一.UTF-8编码文件读取导致的错误 有个txt文件,里面内容为: aaa bbb ccc 以UTF-8编码方式打开txt文件,顺序读取,将里面的值放到一个hashset中,并判断aaa是否在在has ...

  8. AngularJs在单击提交后显示验证信息.

    <!DOCTYPE html> <html ng-app="app"> <head> <meta charset="utf-8& ...

  9. Inno Setup执行SQL脚本的方法

    作为和NSIS并立的.两个最流行的免费Windows应用程序安装包制作工具之一,Inno在学习难度上相对要低一些,非常适合对一些简单的桌面程序打包.但对于较复杂的安装过程,或者Web应用程序来说,我个 ...

  10. MS文件与路径的一些方法记录

    一,路径相关 String path1 = System.IO.Directory.GetCurrentDirectory(); MessageBox.Show("获取应用程序的当前工作目录 ...