`
3806850
  • 浏览: 93288 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

别人写的加压

阅读更多
由于频繁需要解压ZIP,加压ZIP


FileItem:


Java代码
    public class FileItem { 
      private String fileName; 
      private byte[] fileContent; 
   
      public String getFileName() { 
           return fileName; 
    } 
      public void setFileName(String fileName) { 
          this.fileName = fileName; 
      } 
   
     public byte[] getFileContent() { 
          return fileContent; 
     } 
   
    public void setFileContent(byte[] fileContent) { 
          this.fileContent = fileContent; 
       } 
  } 



   import java.io.BufferedInputStream; 
   import java.io.BufferedOutputStream; 
  import java.io.ByteArrayInputStream; 
   import java.io.ByteArrayOutputStream; 
  import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.FileNotFoundException; 
    import java.io.FileOutputStream; 
    import java.io.IOException; 
   import java.io.InputStream; 
   import java.util.ArrayList; 
  import java.util.List; 
   import java.util.zip.ZipEntry; 
import java.util.zip.ZipInputStream; 
   import java.util.zip.ZipOutputStream; 
   
   public class FileUtil { 
      /**缓存大小*/ 
      private final static int BUFFER_SIZE = 8192; 
       /**后缀名*/ 
       private final static String SUFFIX = "zip"; 
       /**后缀名分隔符*/ 
      private final static String POINT = "."; 
       
//       /**
//  26.      * 获得字节数组
//  27.      * 
//  28.      * @param filepath 文件全路径
//  29.      * @return 字节数组
//  30.      * @throws IOException IOException
//  31.      */ 
        
      public static byte[] getBytes(File file) throws IOException{ 
           return getBytes(file.getAbsolutePath()); 
     }  
      public static byte[] getBytes(String filepath) throws IOException { 
         BufferedInputStream bis = null; 
          ByteArrayOutputStream byteArrayOutputStream = null; 
        BufferedOutputStream bos = null; 
        try { 
            byteArrayOutputStream = new ByteArrayOutputStream(); 
              bis = new BufferedInputStream(new FileInputStream(filepath)); 
              bos = new BufferedOutputStream(byteArrayOutputStream); 
             byte[] bytes = new byte[BUFFER_SIZE]; 
             int len; 
             while ((len = bis.read(bytes, 0, BUFFER_SIZE)) != -1) { 
                bos.write(bytes, 0, len); 
             } 
        } catch (FileNotFoundException e) { 
             e.printStackTrace(); 
              throw e; 
         } catch (IOException e) { 
              e.printStackTrace(); 
             throw e; 
          } finally { 
             if (null != bis) { 
                 try { 
                     bis.close(); 
                  } catch (IOException e) { 
                     e.printStackTrace(); 
                } 
             } 
              if (null != byteArrayOutputStream) { 
                try { 
                    byteArrayOutputStream.close(); 
                 } catch (IOException e) { 
                      e.printStackTrace(); 
                  } 
             } 
              if (null != bos) { 
                 try { 
                      bos.close(); 
                 } catch (IOException e) { 
                      e.printStackTrace(); 
                 } 
            } 
          } 
          return byteArrayOutputStream.toByteArray(); 
      } 
        
//       /**
//  82.      * 统一文件分隔符为LINUX,类UNIX文件系统风格
//  83.      * 
//  84.      * @param direcotory 目录
//  85.      * @return 统一处理后目录字符串风格
//  86.      */ 
       private static String replaceAllSeparator(String direcotory) { 
           String str = direcotory.replaceAll("\\\\", "/"); 
           return str.length() != str.lastIndexOf("/") ? str + "/" : str; 
      } 
        
//  92.     /**
//  93.      * 将文件项写到文件 
//  94.      * 
//  95.      * @param fileItem 文件项
//  96.      * @param directory 目录
//  97.      * @throws IOException IOException
//  98.      */ 
      public static void writeFile(FileItem fileItem, String directory) 
             throws IOException { 
         File dir = new File(directory); 
         if (!dir.exists()) { 
             dir.mkdirs(); 
         } 
        writeFile(fileItem.getFileContent(), replaceAllSeparator(directory) 
                 + fileItem.getFileName()); 
     } 
   
// 109.     /**
// 110.      * 写文件
// 111.      * 
// 112.      * @param fileContent 文件二进制流
// 113.      * @param filepath 文件全路径
// 114.      * @throws IOException IOException 
// 115.      */ 
    public static void writeFile(byte[] fileContent, String filepath) 
            throws IOException { 
        InputStream inputStream = new ByteArrayInputStream(fileContent); 
         writeFile(inputStream, filepath); 
    } 
     
// 122.     /**
// 123.      * 将流写到一个文件
// 124.      * 
// 125.      * @param inputStream 文件流
// 126.      * @param filepath 文件路径
// 127.      * @throws IOException IOException 
// 128.      */ 
     public static void writeFile(InputStream inputStream, String filepath) 
            throws IOException { 
       BufferedOutputStream bos = null; 
         BufferedInputStream bis = null; 
       try { 
             File file = new File(filepath); 
            if (!file.exists()) { 
                file.createNewFile(); 
             } 
            bos = new BufferedOutputStream(new FileOutputStream(file)); 
            bis = new BufferedInputStream(inputStream); 
           byte[] buffer = new byte[BUFFER_SIZE]; 
             int len = -1; 
            while ((len = bis.read(buffer, 0, BUFFER_SIZE)) != -1) { 
                 bos.write(buffer, 0, len); 
             } 
        } catch (IOException e) { 
            e.printStackTrace(); 
            throw e; 
        } finally { 
            if (null != bos) 
               try { 
                    bos.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
               } 
            if (null != bis) 
                try { 
                    bis.close(); 
               } catch (IOException e) { 
                    e.printStackTrace(); 
               } 
        } 
    } 
      
// 164.     /**
// 165.      * 解压zip文件
// 166.      * @param filepath 文件全路径
// 167.      * @return 解压后的文件项
// 168.      * @throws IOException IOException
// 169.      */ 
     public static List uncompressZip(String filepath) throws IOException { 
       ByteArrayOutputStream baos = null; 
         BufferedOutputStream bos = null; 
         ZipInputStream zis = null; 
         // zipInputStream 
        List fileList = null; 
        try { 
            zis = new ZipInputStream(new FileInputStream(filepath)); 
             baos = new ByteArrayOutputStream(); 
             bos = new BufferedOutputStream(baos); 
            fileList = new ArrayList(); 
             byte[] buffer = new byte[BUFFER_SIZE]; 
            int len = -1; 
             ZipEntry zipEntry = null; 
             while (null != (zipEntry = zis.getNextEntry())) { 
                 if (null != zipEntry) { 
                     System.out.println("Name:" + zipEntry.getName() + ",Size:" 
                           + zipEntry.getSize() + "bytes"); 
                   while (-1 != (len = zis.read(buffer))) { 
                          bos.write(buffer, 0, len); 
                     } 
                     bos.flush(); 
                     byte[] fileContent = baos.toByteArray(); 
                   FileItem item = new FileItem(); 
                    item.setFileName(zipEntry.getName()); 
                    item.setFileContent(fileContent); 
                     fileList.add(item); 
                 } 
             } 
         } catch (IOException e) { 
             e.printStackTrace(); 
             throw e; 
         } finally { 
             if (null != zis) { 
                 try { 
                    zis.close(); 
                 } catch (IOException e) { 
                    e.printStackTrace(); 
                 } 
            } 
            if (null != baos) { 
               try { 
                    baos.close(); 
               } catch (IOException e) { 
                     e.printStackTrace(); 
                } 
            } 
             if (null != bos) { 
                  try { 
                     bos.close(); 
                 } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
             } 
         } 
        return fileList; 
      } 
 
// 228.     /**
// 229.      * 将目录压缩成zip包
// 230.      * 
// 231.      * @param filepath
// 232.      *            文件全路径
// 233.      * @throws IOException
// 234.      *             IOException
// 235.      */ 
   public static FileItem compressZip(String filepath) throws IOException { 
        File directory = new File(filepath); 
         String filename = directory.getName(); 
         File[] fileList = directory.listFiles(); 
         ZipOutputStream zos = null; 
        BufferedInputStream bis = null; 
          ByteArrayOutputStream baos = null; 
        FileItem fileItem = null; 
         try { 
             baos = new ByteArrayOutputStream(); 
            zos = new ZipOutputStream(baos); 
             byte[] buffer = new byte[BUFFER_SIZE]; 
            int len = -1; 
             for (File file : fileList) { 
                 bis = new BufferedInputStream(new FileInputStream(file)); 
                 while (-1 != (len = bis.read(buffer, 0, BUFFER_SIZE))) { 
                    //ZipEntry为Zip压缩文件的每一项 
                    ZipEntry zipEntry = new ZipEntry(file.getName()); 
                    zipEntry.setSize(file.length()); 
                     zipEntry.setCompressedSize(file.length()); 
                    zos.putNextEntry(zipEntry); 
                    zos.write(buffer, 0, len); 
                } 
                //做完一个文件的读写应清下缓存 
                 zos.flush(); 
                 if (null != bis) { 
                     bis.close(); 
                 } 
              } 
             //完成所有文件的读取,转化为一个二进制流的包装zos 
             zos.finish(); 
             fileItem = new FileItem(); 
            int index = filename.lastIndexOf("."); 
            filename = filename.substring(0, -1 == index ? filename.length() 
                     : index); 
             //要生成zip文件的文件名 
             fileItem.setFileName(filename + POINT + SUFFIX); 
             //要生成的zip文件的二进制流 
             fileItem.setFileContent(baos.toByteArray()); 
        } catch (IOException e) { 
              e.printStackTrace(); 
             throw e; 
         } finally { 
            if (null != baos) { 
                try { 
                    baos.close(); 
                } catch (IOException e) { 
                     e.printStackTrace(); 
                  } 
            } 
            if (null != bis) { 
                 try { 
                   bis.close(); 
                } catch (IOException e) { 
                      e.printStackTrace(); 
                  } 
              } 
             if (null != zos) { 
                try { 
                     zos.close(); 
                 } catch (IOException e) { 
                     e.printStackTrace(); 
                 } 
             } 
         } 
          return fileItem; 
      } 
  
     /**
      * 解压zip文件
       * 
       * @param zipFile zip文件
      * @return 解压后的文件项
     * @throws IOException IOException
     */ 
    public static List uncompressZip(File zipFile) throws IOException { 
        String filepath = zipFile.getAbsolutePath(); 
        return uncompressZip(filepath); 
      } 
  
    public static void main(String[] args) throws IOException { 
         //加压 
         FileItem fileItem = compressZip("F:/aa"); 
         //将SCYSB_1234567890_0901_20100912082719250.zip文件写到F:/zjie目录 
         FileUtil.writeFile(fileItem, "F:/zjie"); 
        //解压F:/zjie/SCYSB_1234567890_0901_20100912082719250.zip文件 
          List fileItemList = FileUtil 
               .uncompressZip("F:/zjie/aa.zip"); 
          //将解压后的文件流生成文件写到F:/zjie/SCYSB_1234567890_0901_20100912082719250/目录 
         for (int i = 0; i < fileItemList.size(); i++) { 
            FileItem item = (FileItem) fileItemList.get(i); 
//            DbfUtil.dbfReader(item.getFileContent()); 
             FileUtil.writeFile(item.getFileContent(), "F:/zjie/SCYSB_1234567890_0901_20100912082719250/"+item.getFileName()); 
          } 
          
     } 
  } 
分享到:
评论

相关推荐

    加压过滤机常见故障分析与处理

    加压过滤机是一种广泛应用在工业生产中的过滤设备,尤其在矿业、化工和冶金等领域有着重要用途。它的主要作用是通过施加压力,来促进液体或气体中固体颗粒的分离,提高过滤效率和质量。为了确保加压过滤机能够稳定...

    碎煤加压气化技术

    碎煤加压气化技术是一项将碎煤作为原料,在高压条件下进行气化的化工技术。该技术最早由德国鲁奇公司开发,后来在多个国家得到了应用和发展。碎煤加压气化技术相较于其他煤气化技术,具有明显的优点,其成熟可靠、...

    碎煤加压气化炉的改进

    为了解决碎煤加压气化炉生产中存在的蒸汽消耗高、污水产量大且处理费用较高的问题,提出了将气化炉产的煤气水通过高压泵送入气化炉的氧化层内,让水汽化吸收一部分热量的改进方案,喷水喷嘴采用耐高温、耐腐蚀、耐磨...

    机械加压送风防烟系统.pptx

    ### 机械加压送风防烟系统详解 #### 一、系统作用与原理 **机械加压送风防烟系统**的主要目的是确保在建筑物发生火灾时,能够为人员提供一个安全且不受烟气干扰的疏散路径和避难场所。为了实现这一目标,系统通过...

    机械加压送风系统设计.doc

    ### 机械加压送风系统设计详解 #### 一、引言 机械加压送风系统作为一种重要的建筑安全措施,在不具备自然通风条件的建筑物中扮演着至关重要的角色。该系统通过对建筑物内部进行适当的送风加压,有效地阻止了火灾...

    超级兔子加压板 加压板

    【超级兔子加压板】是一款高效且易用的压缩与解压缩工具,它以其独特的算法和用户友好的界面,为用户提供了便捷的数据压缩和管理服务。在IT领域,压缩工具是必不可少的,尤其是在处理大量数据时,能够节省存储空间、...

    浮选精煤脱水用加压过滤机优化改进研究

    由于加压过滤机是以压缩空气为媒介,通过滤饼两侧的压力差实现细粒精煤脱水,因而其在生产中普遍存在处理能力低、电能消耗大、环境影响大的问题。针对加压过滤机处理能力低的问题,梁北选煤厂在生产中发现由于入料粒度...

    霍夫曼算法加压解压程序

    在文件的加压解压过程中,霍夫曼算法扮演了关键角色。 在霍夫曼编码中,首先需要统计源文件中每个字符的频率。字符频率越高,其对应的编码就越短。通过构建霍夫曼树,可以生成一个最小带权路径长度的二叉树,其中每...

    加压过滤机滤液系统的优化

    浮选精煤加压过滤机脱水时,滤液返回到浮选系统会恶化浮选的分选,返回到循环水池会恶化循环水系统。为了合理处理加压过滤机滤液,改善滤液系统,根据选煤厂的工艺特点,提出了滤液分级回收工艺。在实施过程中根据滤液...

    防烟加压送风系统送风量测试记录(二).xls

    防烟加压送风系统送风量测试记录(二)

    浮选精煤加压过滤机入料泵安全运行的措施

    选煤厂在进行煤炭处理的过程中,常常使用浮选精煤加压过滤机,而在这一过程中,入料泵的安全运行至关重要。然而,在实际操作中,由于各种原因,入料泵的安全问题时有发生,例如望峰岗选煤厂精煤加压过滤机入料泵就...

    浮选精煤加压过滤机滤液处理方法研究

    选煤厂浮选精煤加压过滤机滤液返回浮选使浮选系统煤泥水量增大,增大了浮选压力,而且大量细泥在浮选系统循环,恶化了浮选系统的分选效果。为合理处理滤液,改进煤泥水系统,提出了"浮选柱+快开压滤机"独立回收滤液的工艺...

    马脊梁选煤厂加压过滤机故障分析及解决方法

    以马脊梁选煤厂HBF-S120型加压过滤机为例,介绍了加压过滤机结构及工作原理,并对加压过滤机在使用中出现的加压仓仓压低、刮板输送机报警、上/下闸板开关不到位、上/下密封圈充/泄气超时、卸料仓充/放气超时等故障...

    加压泵站恒压供水PLC控制系统的设计.pdf

    本文以西安某水厂的二次加压泵站恒压供水PLC监控系统为例,介绍了加压泵站恒压供水PLC控制系统的设计细节,包括系统的主要组成部分、功能与原理,以及加压泵站的恒压实现方式。 1. 系统主要组成部分 加压泵站恒压...

    加压泵房工程施工设计方案.doc

    加压泵房工程施工设计方案.doc

    加压求流法_multisim仿真源文件_电子实验仿真.zip

    加压求流法是电子工程领域中的一种电路分析方法,主要应用于模拟电路设计与分析,尤其是在教学和实验环境中。Multisim是一款强大的电路仿真软件,它为工程师和学生提供了直观的界面以及广泛的元器件库,使得加压求流...

    GPJ-120加压过滤机在青海盐湖选煤厂的应用

    GPJ-120加压过滤机是一种应用于选煤厂的重要设备,主要用于煤浆的分离和脱水作业。它的工作原理主要基于过滤原理,即利用固体颗粒与液体之间的物理性质差异,通过施加压力使煤浆中的固体颗粒通过过滤介质形成滤饼,...

    防烟加压送风系统送风量测试记录(三).xls

    防烟加压送风系统送风量测试记录(三)

Global site tag (gtag.js) - Google Analytics