`

文件的拷贝和转移

    博客分类:
  • 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实现的文件和文件夹拷贝和转移

    用java实现的文件和文件夹拷贝和转移

    大文件快速拷贝工具

    尤其是在处理大型文件,如高清视频、大型数据库和多媒体档案时,传统的文件拷贝方法往往因为效率低下而无法满足需要。为了应对这一挑战,软件开发者们研发出了一系列"大文件快速拷贝工具"。这类工具通过优化文件传输...

    FTP文件拷贝(边拷贝边删除).rar

    标题中的“FTP文件拷贝(边拷贝边删除)”指的是一个功能强大的FTP文件传输程序,它不仅能够将FTP服务器上的文件下载到本地,而且在拷贝过程中还支持自动删除源文件,这在需要释放远程存储空间或者确保文件一次性转移...

    文件火速拷贝大师增强版

    【文件火速拷贝大师增强版】是一款专为提高文件拷贝效率而设计的强大工具,其核心功能在于优化数据传输速度,确保用户在转移大量文件时能以最快速度完成任务。这款软件针对传统文件复制过程中的瓶颈进行优化,如I/O...

    C++ 文件操作类(拷贝、删除、移动、改名)

    - 自C++17起,`std::filesystem::copy_file()`提供了更便捷的文件拷贝功能。它不仅可以拷贝文件,还可以设置拷贝选项,例如是否覆盖已存在的目标文件。 2. **文件删除**: - `remove()`函数来自`&lt;cstdio&gt;`,它...

    FastCopy325_x64.zip

    FastCopy以其卓越的性能和易用性在同类软件中脱颖而出,尤其在大量数据转移和备份场景中,其优势尤为显著。 FastCopy的核心特点在于其优化的拷贝算法,能够充分利用系统资源,尤其是在处理大文件和多文件夹结构时,...

    最快的文件拷贝工具(每秒20MB)

    在IT领域,高效的数据传输和文件拷贝是日常工作中的重要环节。"最快的文件拷贝工具(每秒20MB)"这个标题所指的工具显然强调了其在速度方面的优势,能够实现每秒20MB的拷贝速率。这在处理大量数据或者需要频繁转移文件...

    01 批量拷贝指定文件.zip

    - **数据迁移**:在不同设备间转移大量文件,如从一台电脑迁移到另一台电脑,或者从本地存储迁移到云存储。 - **版本控制**:在开发环境中,经常需要复制特定版本的代码或资源文件到不同的测试环境。 - **文件整理**...

    内部网中不同机器间的文件拷贝方法

    在内部网络环境中,不同计算机之间的文件拷贝是日常工作中常见的需求。这可能涉及到开发、测试、部署等各个环节,确保数据的高效传输对于提高工作效率至关重要。本文将总结三种主要的文件拷贝方法:FTP(文件传输...

    windows下批量拷贝目录下所有文件夹中的指定文件.bat

    windows下批量拷贝目录下所有文件夹中的...肯定不能改动文件的名字,就是拷贝到一个文件中,方便后期的文件查看、转移和分析,简单的说的话就是把存放数据的那个盘下面的所有文件夹中的variant文件(.vcf)拷贝出来;

    Fastcopy文件拷贝copy

    标题中的“Fastcopy文件拷贝copy”指的是一款名为Fastcopy的高效文件复制软件。Fastcopy因其极快的文件拷贝速度而闻名,它是由日本开发者设计并开发的一款工具,旨在提供比操作系统自带的文件复制功能更快速、更稳定...

    快速转移文件到别的文件夹工具

    FastCopy是一款广受好评的开源软件,它以其高速的文件拷贝和删除功能而著名,支持多种文件系统,并且可以自定义设置操作模式,如优先级、错误处理策略等。 在实际使用中,用户可能需要了解如何安装和配置FastCopy,...

    关于文件拷贝.docx

    标题和描述中提到的是关于文件拷贝,特别是如何在不同系统之间,比如虚拟机与主机之间进行文件的传输。以下是对这些知识点的详细说明: 在现代计算机环境中,文件拷贝是一个常见的操作,尤其是在多操作系统环境下,...

    快速拷贝工具。G级以上文件更快

    标题提到的“快速拷贝工具”是一种专门设计用于提高大文件拷贝速度的软件工具。在处理GB级别的大型文件时,传统的文件复制操作可能会非常耗时,因为它们通常依赖于操作系统的基础文件系统功能,这些功能在处理大量...

    ExtremeCopy1.4绿色版快速文件拷贝工具

    通过以上分析,我们可以看出ExtremeCopy是一款专注于提高文件拷贝速度的工具,尤其适合需要频繁转移大量数据的用户,它提供了超越操作系统默认复制功能的性能,并且具有良好的用户友好性和可靠性。

    最快拷贝文件.rar

    在IT领域,文件拷贝是一项基础但至关重要的操作。标题中的"最快拷贝文件.rar"表明我们关注的焦点...通过合理选择和使用高效的文件拷贝工具,结合系统优化,我们可以在日常工作中显著提高文件拷贝效率,节约宝贵的时间。

    写的一个很方便的拷贝文件的程序

    在当今快节奏的工作环境中,高效地管理文件是提升工作效率的关键。随着IT行业的迅猛发展,...通过该程序,用户可以实现快速、高效、批量的文件拷贝,使文件管理变得简单快捷,从而在工作和生活中赢得更多宝贵的时间。

    FastCopy 2.01 文件拷贝利器

    《FastCopy 2.01:高效文件拷贝的得力助手》 在日常的计算机操作中,我们经常需要进行大量的文件复制与移动工作,尤其是在处理J2EE开发的workspace等大型项目时,传统的文件操作工具往往显得效率低下。这时,Fast...

    TeraCopy - 快速拷贝文件工具

    TeraCopy 是一款专为提升文件拷贝速度和效率而设计的工具,尤其适用于处理大量数据的转移。它优化了文件复制过程,减少了在传输大文件或大量文件时可能出现的错误和等待时间。这款工具出自CodeProjects,提供了源码...

Global site tag (gtag.js) - Google Analytics