`
shuai1234
  • 浏览: 985676 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

file and directory 创建 拷贝 删除 剪切 压缩还有解压缩(java.util.zip.*;)等常用操作

    博客分类:
  • java
 
阅读更多
package com.wepull.demo;

 

import java.io.*;

import java.util.zip.*;

 

/** *//**

 * 对文件或者目录操作的类

 * @version 1.0

 * @author leno

 */

public class FileUtil {

 

   private static void copy(File source, File target) throws IOException {

      File tar = new File(target, source.getName());

      if (source.isDirectory()) {

        System.out.println("开始创建目录:" + tar.getPath());

        tar.mkdir();

        File[] fs = source.listFiles();

        for (int i = 0; i < fs.length; i++) {

           copy(fs[i], tar);

        }

      } else {

        System.out.println("开始从" + source + "拷贝文件到" + tar.getPath());

        InputStream is = new FileInputStream(source);

        OutputStream os = new FileOutputStream(tar);

        byte[] buf = new byte[1024];

        int len = 0;

        while ((len = is.read(buf)) != -1) {

           os.write(buf, 0, len);

        }

        is.close();

        os.close();

      }

   }

 

   /** *//**

    * 拷贝文件或者目录到某个指定的路径

    * 

    * @param source

    *            源文件或者目录

    * @param target

    *            目标路径

    * @throws IOException

    */

   public static void copy(String source, String target) {

      File sour = new File(source);

      File tar = new File(target);

      try {

        copy(sour, tar);

      } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

      }

   }

 

   private static void delete(File file) {

      if (file.isDirectory()) {

        File[] fs = file.listFiles();

        for (int i = 0; i < fs.length; i++) {

           delete(fs[i]);

        }

        file.delete();

      } else {

        file.delete();

      }

   }

 

   /** *//**

    * 删除一个文件或者目录

    * 

    * @param file

    */

   public static void delete(String path) {

      File file = new File(path);

      delete(file);

   }

 

   /** *//**

    * 压缩文件或者目录到指定的路径

    * 

    * @param zipFileName

    *            目标路径

    * @param inputPath

    *            被压缩的文件或者目录

    */

   public static void zip(String zipFileName, String inputPath) {

      File inputFile = new File(inputPath);

      ZipOutputStream out;

      try {

        out = new ZipOutputStream(new FileOutputStream(zipFileName));

        zip(out, inputFile, inputFile.getName());

        System.out.println("压缩完成!");

        out.close();

      } catch (Exception e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

      }

   }

 

   private static void zip(ZipOutputStream out, File f, String base)

        throws Exception {

      System.out.println("正在压缩:" + f.getName() + " ");

      if (f.isDirectory()) {

        File[] fs = f.listFiles();

        base += "/";

        System.out.println("新建目录条目:" + f.getName());

        out.putNextEntry(new ZipEntry(base)); // 生成相应的目录

        for (int i = 0; i < fs.length; i++) {

           // 对本目录下的所有文件对象递归调用本方法

           zip(out, fs[i], base + fs[i].getName());

        }

      } else {

        System.out.println("新增文件条目:" + f.getName());

        out.putNextEntry(new ZipEntry(base));

        InputStream is = new FileInputStream(f);

        byte[] buf = new byte[1024];

        int len = 0;

        while ((len = is.read(buf)) != -1) {

           out.write(buf, 0, len);

        }

        is.close();

      }

   }

 

   /** *//**

    * 解压缩zip文件到指定的路径

    * 

    * @param zipfile

    *            zip格式压缩文件

    * @param desPath

    *            目标路径

    */

   public static void unzip(String zipFile, String desPath) {

      // 建立输出流,用于将从压缩文件中读出的文件流写入到磁盘

      OutputStream out = null;

      // 建立输入流,用于从压缩文件中读出文件

      ZipInputStream is;

      try {

        is = new ZipInputStream(new FileInputStream(zipFile));

        ZipEntry entry = null;

        while ((entry = is.getNextEntry()) != null) {

           System.out.println("正在解压缩:" + entry.getName() + " ");

           File f = new File(desPath + "\\" + entry.getName());

           if (entry.isDirectory()) {

              System.out.println("新建目录:" + f.getName());

              f.mkdir();

           } else {

              System.out.println("新增文件:" + f.getName());

              // 根据压缩文件中读出的文件名称新建文件

              out = new FileOutputStream(f);

              byte[] buf = new byte[1024];

              int len = 0;

              while ((len = is.read(buf)) != -1) {

                 out.write(buf, 0, len);

              }

              out.close();

           }

        }

        is.close();

      } catch (Exception e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

      }

   }

 

   /** *//**

    * 创建新文件

    * 

    * @param path

    */

   public static void createFile(String path) {

      File file = new File(path);

      try {

        file.createNewFile();

      } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

      }

 

   }

 

   /** *//**

    * 创建新目录

    * 

    * @param path

    */

   public static void createDir(String path) {

      File file = new File(path);

      file.mkdirs();

   }

 

   /** *//**

    * 剪切文件或者目录到某个指定的路径

    * 

    * @param source

    *            源文件或者目录

    * @param target

    *            目标路径

    * 

    */

   public static void cutTo(String source, String target) {

      File sourFile = new File(source);

      File tarFile = new File(target);

      if (sourFile.isFile()) {

        if (tarFile.isDirectory()) {

           sourFile.renameTo(tarFile);

        }

      } else {

        copy(source, target);

        delete(source);

      }

   }

 

   public static void main(String[] args) {

      // copy("E:\\w.txt", "E:\\a");

      // delete("E:\\a");

      // zip("E:\\a.zip", "E:\\b");

      // unzip("E:\\a.zip", "E:\\b");

      // createFile("E:\\a.txt");

      // createDir("E:\\bb");

      // cutTo("E:\\b", "D:\\");

   }

}

 

分享到:
评论

相关推荐

    用java.util.zip包现数据压缩与解压

    ### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

    java.util.zip 解压缩文件,ZIP格式压缩文件.rar

    `java.util.zip` 包包含几个关键类,如 `ZipInputStream`, `ZipOutputStream`, `ZipEntry` 等,它们共同协作以完成ZIP文件的读写操作。 首先,让我们看看如何解压缩ZIP文件。解压缩过程主要涉及到 `ZipInputStream`...

    28个java常用的工具类

    11. **`java.io.File`**: 文件和目录操作,如创建、删除、读取文件信息。 12. **`java.nio.*`** (New IO): 非阻塞I/O,提供更高效的文件和网络操作。 13. **`java.util.zip.*`**: 压缩和解压缩文件,如`...

    java常用的工具类整理28个

    17. **java.util.zip.***:包括`ZipInputStream`、`ZipOutputStream`等,用于处理ZIP文件的压缩和解压。 18. **java.util.jar.***:处理JAR文件的工具类,如`JarInputStream`、`JarOutputStream`。 19. **java.io....

    30个常用java工具类

    21. **`java.util.zip`** 包:处理压缩和解压缩,如GZIPOutputStream和ZipInputStream。 22. **`java.util.jar`** 包:处理JAR文件,如JarOutputStream和JarInputStream。 23. **`java.util.Properties`**:用于...

    java工具类

    7. **`java.io.File`**:处理文件和目录,包括创建、删除、重命名等操作。 8. **`java.io.FileReader`/`BufferedReader`** 和 **`java.io.FileWriter`/`BufferedWriter`**:读写文件的常用工具,`BufferedReader`和...

    根据java.util.zip源码修改zip支持中文

    在Java编程语言中,`java.util.zip`包提供了对压缩文件格式的支持,如ZIP和GZ等。然而,早期版本的Java在处理包含非ASCII字符(例如中文字符)的文件名时存在一些问题。这是因为ZIP文件格式本身是支持Unicode编码的...

    java编程思想中的源码与net.mindview.util.Print.*jar包

    Java编程思想中的各个章节的源码,以及所要的net.mindview.util.Print.*的jar包。

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx

    - **`java.util.Date`**:这个类提供了创建和操作日期/时间的功能,它能够存储完整的日期和时间信息(包括小时、分钟、秒和毫秒)。 - **`java.sql.Date`**:这是一个专门用于数据库操作的日期类,继承自`java.util....

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    "java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError" 是一个典型的错误提示,它表明在并发执行过程中遇到了内存不足的问题。下面我们将深入探讨这个问题的原因、影响以及如何解决。 内存溢出...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本实践主要关注如何使用Java来处理ZIP格式的压缩文件,以下将详细介绍相关知识点。 1. **Java档案API...

    利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能.rar

    在Java编程语言中,`java.util.zip`包提供了一系列的类和接口,用于处理ZIP格式的压缩和解压缩操作。这个包中的核心类包括`ZipOutputStream`和`ZipInputStream`,它们分别用于创建ZIP文件和读取解压缩ZIP文件。下面...

    用java解压*.zip*.rar*.gz*.bz*.bz2等压缩文件含jar

    标题提到的"用java解压*.zip*.rar*.gz*.bz*.bz2等压缩文件含jar"涉及到Java对多种压缩格式的支持,包括ZIP、RAR、GZ、BZ和BZ2。这些文件格式在软件开发、数据传输和存储中广泛使用。下面我们将详细讨论如何使用Java...

    org.apache.tools.zip解决解压乱码问题

    * @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下 * void */ public static void unzip(String zipFilePath, String targetPath) throws ...

    java算法,实现压缩及解压缩

    通过`java.util.zip`包提供的工具类,可以方便地实现文件压缩与解压缩操作。需要注意的是,在实际应用过程中还需要考虑异常处理、资源释放等细节问题,以确保程序的稳定性和安全性。此外,还可以进一步优化缓冲区...

    java.util.Date与java.sql.Date相互转换

    ### Java.util.Date与Java.sql.Date相互转换 #### 知识点概述 在Java开发中,经常需要处理日期和时间相关的操作。Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但...

    java 解压缩zip文件

    在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...

    (JAVA)利用Java实现zip压缩.解压缩.rar_decompress rar java_zip 压缩

    在Java编程语言中,我们可以利用内置的`java.util.zip`包来实现文件的压缩和解压缩功能。这个包提供了一系列的类,如`ZipOutputStream`用于创建ZIP压缩文件,`ZipInputStream`则用于读取和解压缩ZIP文件。在本教程中...

Global site tag (gtag.js) - Google Analytics