Java解压文件

  1. import java.io.File;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.nio.charset.Charset;
  6. import java.util.Enumeration;
  7. import java.util.zip.ZipEntry;
  8. import java.util.zip.ZipFile;
  9. public class UrlTest {
  10. public static void main(String[] args) {
  11. try {
  12. //将temp下所有的压缩文件解压
  13. unzipFromLoc( "D:\\LeanwoProgram_2018\\temp");
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. }
  17. }
  18. //从总目录下解压文件里所有的压缩包至目的文件路径
  19. public static void unzipFromLoc(String filePath) throws Exception{
  20. File file = new File(filePath);
  21. File[] list = file.listFiles();
  22. String from = "";
  23. String to = "D:\\LeanwoProgram_2018\\temp\\";
  24. for(File f : list){
  25. boolean bool = f.isFile();
  26. if(bool){
  27. from = f.getAbsolutePath();
  28. //from = from.replace("\\","\\\\");
  29. unZipFiles( new File(from),to);
  30. }
  31. }
  32. }
  33. /**
  34. * 解压文件到指定目录
  35. * 解压后的文件名,和之前一致
  36. * @param zipFile 待解压的zip文件
  37. * @param descDir 指定目录
  38. */
  39. public static void unZipFiles(File zipFile, String descDir) throws IOException {
  40. ZipFile zip = new ZipFile(zipFile,Charset.forName( "GBK")); //解决中文文件夹乱码
  41. String name = zip.getName().substring(zip.getName().lastIndexOf( '\\')+ 1, zip.getName().lastIndexOf( '.'));
  42. File pathFile = new File(descDir+name);
  43. if (!pathFile.exists()) {
  44. pathFile.mkdirs();
  45. }
  46. for (Enumeration<? extends ZipEntry> entries = zip.entries(); entries.hasMoreElements();) {
  47. ZipEntry entry = (ZipEntry) entries.nextElement();
  48. String zipEntryName = entry.getName();
  49. InputStream in = zip.getInputStream(entry);
  50. String outPath = (descDir + name + "/"+ zipEntryName).replaceAll( "\\*", "/");
  51. // 判断路径是否存在,不存在则创建文件路径
  52. File file = new File(outPath.substring( 0, outPath.lastIndexOf( '/')));
  53. if (!file.exists()) {
  54. file.mkdirs();
  55. }
  56. // 判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
  57. if ( new File(outPath).isDirectory()) {
  58. continue;
  59. }
  60. // 输出文件路径信息
  61. // System.out.println(outPath);
  62. FileOutputStream out = new FileOutputStream(outPath);
  63. byte[] buf1 = new byte[ 1024];
  64. int len;
  65. while ((len = in.read(buf1)) > 0) {
  66. out.write(buf1, 0, len);
  67. }
  68. in.close();
  69. out.close();
  70. }
  71. System.out.println( "******************解压完毕********************");
  72. return;
  73. }
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值