• 解压上传的zip文件流和文件


    /**
    * 解压上传的zip文件流
    * @param stream
    * @param outputDirectory
    */
    public static String unzip(InputStream stream,String outputDirectory){
    ZipInputStream in = null;
    in = new ZipInputStream(stream);

    ZipEntry z;
    String outDir="";
    String filePath="";
    try {
    while ((z=in.getNextEntry())!= null){
    //System.out.println("unziping "+z.getName());

    if (z.isDirectory()){
    String name=z.getName();
    name=name.substring(0,name.length()-1);
    File f=new File(outputDirectory+File.separator+name);
    f.mkdir();
    //System.out.println("mkdir "+outputDirectory+File.separator+name);

    }else{
    outDir = outputDirectory+File.separator+UPLOAD_PATH;
    /*File fdir = new File(outDir);
    if (!fdir.exists()) {
    fdir.mkdirs();
    } */
    makeDir(outDir);
    //System.out.println("outDir "+outDir);
    filePath = outDir+File.separator+z.getName();
    //删除文件
    FileUtil.deleteFile(filePath);

    File f=new File(filePath);

    if(!f.exists()){
    f.createNewFile();
    }
    //处理后缀名
    String fileName = z.getName();
    String prefix=fileName.substring(fileName.lastIndexOf(".")+1);
    //System.out.println(prefix);
    if(!prefix.equalsIgnoreCase("zip")){
    in.close();
    return "00003";
    }
    FileOutputStream out=new FileOutputStream(f);
    int b;
    while ((b=in.read()) != -1){
    out.write(b);
    }
    out.close();
    }
    }
    in.close();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return "00000";

    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return "00000";
    }
    if(StringUtils.isEmpty(filePath) ||
    StringUtils.isEmpty(outDir)){
    return "00001";
    }
    //处理zip文件
    String outFileDir = outputDirectory;

    String result = unZip(filePath,outFileDir);
    return result;
    }

    public static String unZip(String fileName, String unZipDir) {
    String outFileDir = unZipDir+File.separator+DATA_PATH;
    //makeDir(outFileDir);
    try {
    // 先判断目标文件夹是否存在,如果不存在则新建,如果父目录不存在也新建
    File f = new File(outFileDir);
    if (!f.exists()) {
    f.mkdirs();
    }

    File[] files = f.listFiles();

    if(files == null)
    return "00003";
    for (int i = 0; i < files.length; i++) {
    // 删除子文件
    if (files[i].isFile()) {
    boolean flag =FileUtil.delete(files[i].getAbsolutePath());
    if (!flag) {
    break;
    }
    }
    }

    BufferedOutputStream dest = null;
    BufferedInputStream is = null;
    ZipEntry entry;
    ZipFile zipfile = new ZipFile(fileName);
    //删除zip文件
    FileUtil.deleteFile(fileName);

    Enumeration e = zipfile.entries();
    while (e.hasMoreElements()) {
    entry = (ZipEntry) e.nextElement();
    //System.out.println("Extracting: " + entry);
    is = new BufferedInputStream(zipfile.getInputStream(entry));
    int count;
    byte data[] = new byte[BUFFER];
    FileOutputStream fos = new FileOutputStream(outFileDir + File.separator
    + entry.getName());
    //System.out.println("entry.getName(): " + entry.getName());
    dest = new BufferedOutputStream(fos, BUFFER);
    while ((count = is.read(data, 0, BUFFER)) != -1) {
    dest.write(data, 0, count);
    }
    dest.flush();
    dest.close();
    is.close();
    }

    //
    } catch (Exception e) {
    e.printStackTrace();
    return "00003";
    }
    return "";
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String fileName = "e:/008 山东长鸿工程塑胶有限公司 山东长鸿工程塑胶有限公司-2015.zip";
    String unZipDir = "e:/2/2";

    ZipInputStream in = null;
    try {
    in = new ZipInputStream(new FileInputStream(zipFileName));

    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return;
    }


    unzip(in, unZipDir);

    }

  • 相关阅读:
    Gengxin讲STL系列——Set
    理解Python的With语句
    Python中Non-ASCII character 'xe7' in file的问题解决
    gnome-terminal的一些调整
    硬盘的CHS寻址
    Wiz发布cnblog笔记
    cygwin安装man手册
    linux命令行使用
    小步前进
    学习的感觉真好
  • 原文地址:https://www.cnblogs.com/jinesh/p/4807665.html
Copyright © 2020-2023  润新知