`

(Java)文件及其文件夹的复制,删除,拷贝等操作类

 
阅读更多

package util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;

public class FileUtil {
    private final static String FILE_SUFFIX = ".java.drl";

    private final static String FILE_TEMP = "C:/temp/";

    /**
     * 将已存在的drl文件删除
     *
     * @param ObjectPath
     */
    public static void deleteExistedDRLFile(String ObjectPath) {
        File filePath = new File(ObjectPath);
        if (!filePath.exists()) {
            System.out.println("目录不存在!");
        } else {
            if (filePath.isDirectory()) {
                File[] list = filePath.listFiles(new FilenameFilter() {
                    public boolean accept(File dir, String name) {
                        return name.endsWith(FILE_SUFFIX);
                    }
                });
                for (int i = 0; i < list.length; i++) {
                    list[i].delete();
                }
            }
        }
    }

    /**
     * 创建文件夹,如果有则不创建
     *
     * @param ObjectPath
     */
    public static boolean creareDirectory(String ObjectPath) {
        boolean flag = true;

        File filePath = new File(ObjectPath);
        if (!filePath.exists()) {
            filePath.mkdir();
            flag = false;
        }

        return flag;
    }

    /**
     * 查看某文件夹下面是否有文件,有文件则创建一个temp文件夹,将文件拷贝到temp目录下(备份文件) 没有文件怎什么都不做
     * 备份后,把原文件夹里文件删除
     *
     * @param ObjectPath
     */
    public static void backupFile(String ObjectPath, String dirName) {
        String backupPath;

        if (!FILE_TEMP.endsWith(File.separator)) {
            backupPath = FILE_TEMP + File.separator + dirName;
        } else {
            backupPath = FILE_TEMP + dirName;
        }

        File backupFilePath = new File(backupPath);
        if (!backupFilePath.exists()) {
            backupFilePath.mkdirs();
        }
        File filePath = new File(ObjectPath);
        if (!filePath.exists()) {
            System.out.println("目录不存在!");
        } else {
            if (filePath.isDirectory()) {
                File[] list = filePath.listFiles();
                if (list != null && list.length != 0) {
                    copyFolder(ObjectPath, backupPath);// 文件备份
                    for (int i = 0; i < list.length; i++) {
                        list[i].delete();
                    }
                }
            }
        }
    }

    /**
     * 复原文件,把文件从备份文件夹拷贝到原来文件夹
     *
     * @param ObjectPath
     * @param dirName
     */
    public static void recoverFile(String ObjectPath, String dirName) {
        String backupPath;
        if (ObjectPath.endsWith(File.separator)) {
            ObjectPath = new StringBuffer(ObjectPath).append(dirName)
                    .toString();
        } else {
            ObjectPath = new StringBuffer(ObjectPath)
                    .append(File.separatorChar).append(dirName).toString();
        }

        if (!FILE_TEMP.endsWith(File.separator)) {
            backupPath = FILE_TEMP + File.separator + dirName;
        } else {
            backupPath = FILE_TEMP + dirName;
        }
        File backupFilePath = new File(backupPath);
        if (!backupFilePath.exists()) {
            backupFilePath.mkdirs();
        }
        File filePath = new File(ObjectPath);
        if (!filePath.exists()) {
            System.out.println("目录不存在!");
        } else {
            if (filePath.isDirectory()) {
                File[] list = filePath.listFiles();
                if (list != null && list.length != 0) {
                    copyFolder(backupPath, ObjectPath);// 文件复原
                }
            }
        }
    }

    /**
     * 复制整个文件夹内容
     *
     * @param oldPath
     *            String 原文件路径 如:c:/fqf
     * @param newPath
     *            String 复制后路径 如:f:/fqf/ff
     * @return boolean
     */
    public static void copyFolder(String oldPath, String newPath) {
        try {
            (new File(newPath)).mkdir(); // 如果文件夹不存在 则建立新文件夹
            File a = new File(oldPath);
            String[] file = a.list();
            File temp = null;
            for (int i = 0; i < file.length; i++) {
                if (oldPath.endsWith(File.separator)) {
                    temp = new File(oldPath + file[i]);
                } else {
                    temp = new File(oldPath + File.separator + file[i]);
                }

                if (temp.isFile()) {
                    FileInputStream input = new FileInputStream(temp);
                    FileOutputStream output = new FileOutputStream(newPath
                            + "/" + (temp.getName()).toString());

                    byte[] b = new byte[1024 * 5];
                    int len;
                    while ((len = input.read(b)) != -1) {
                        output.write(b, 0, len);
                    }
                    output.flush();
                    output.close();
                    input.close();
                }
                if (temp.isDirectory()) {// 如果是子文件夹
                    copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
                }
            }
        } catch (Exception e) {
            System.out.println("复制整个文件夹内容操作出错");
            e.printStackTrace();
        }
    }

    /**
     * 删除备份文件和存放备份文件的文件夹
     *
     * @param ObjectPath
     */
    public static void deleteFileAndDirectory(String dirName) {
        String ObjectPath;
        if (!FILE_TEMP.endsWith(File.separator)) {
            ObjectPath = FILE_TEMP + File.separator + dirName;
        } else {
            ObjectPath = FILE_TEMP + dirName;
        }

        File filePath = new File(ObjectPath);
        if (!filePath.exists()) {
            filePath.mkdirs();
            System.out.println("目录不存在!");
        } else {
            if (filePath.isDirectory()) {
                File[] list = filePath.listFiles();

                for (int i = 0; i < list.length; i++) {
                    list[i].delete();
                }
            }
            filePath.delete();
        }
    }

    /**
     * 判断某文件夹下是否存在文件,存在返回true
     *
     * @param ObjectPath
     * @return
     */
    public static boolean existFileInDirectory(String ObjectPath) {
        boolean flag = false;
        File filePath = new File(ObjectPath);
        if (filePath.exists()) {

            if (filePath.isDirectory()) {
                File[] list = filePath.listFiles();
                if (list != null && list.length != 0) {
                    flag = true;
                }
            }
        }

        return flag;
    }

    /**
     * 删除某个文件夹
     * @param ObjectPath
     */
    public static void deleteDirectory(String ObjectPath) {

        File filePath = new File(ObjectPath);
        if (filePath.exists()) {
            filePath.delete();
        }
    }
    /**
     * 将已存在的文件删除
     *
     * @param ObjectPath
     */
    public static boolean deleteExistedFile(String ObjectPath,final String fileName) {
        boolean flag =false;
        File filePath = new File(ObjectPath);
        if (filePath.exists()) {           
            if (filePath.isDirectory()) {
                File[] list = filePath.listFiles(new FilenameFilter() {
                    public boolean accept(File dir, String name) {
                        return name.equals(fileName);
                    }
                });
                for (int i = 0; i < list.length; i++) {
                    list[i].delete();
                }
                flag=true;
            }
        }
       
        return flag;
    }
}

分享到:
评论

相关推荐

    java 文件夹复制拷贝

    在Java编程中,文件夹复制是一项常见的操作,特别是在系统备份、数据迁移或者程序部署等场景。本篇将详细讲解如何实现文件夹的复制,并在复制完成后删除原文件夹。我们将基于给定的`FileCopy.java`文件来探讨相关...

    java文件夹的拷贝

    综上所述,Java文件夹的拷贝涉及了文件系统的操作、文件和目录的遍历、文件的读写与复制等多个知识点。`copyFile.java`源码文件为我们提供了一个基础的实现,通过理解和扩展这个代码,我们可以根据实际需求构建更...

    java复制文件及复制文件夹

    在Java编程中,复制文件和复制文件夹是常见的操作,特别是在处理数据迁移、备份或程序部署时。下面我们将深入探讨如何使用Java实现这些功能,并提供相关的代码示例。 首先,让我们看看如何复制单个文件。Java标准库...

    java实现一个目录下全部文件复制到另一目录

    在Java中,我们通常使用`java.nio`包下的`Files`和`Paths`类来处理文件的读写操作,因为它们提供了更高效和易用的API。`Files.copy()`方法可以用来复制文件,并且可以设置是否覆盖已存在的目标文件。 ```java for ...

    Java实现Linux的远程拷贝

    JSch是Java的一个开源库,提供了SSH2协议的实现,允许我们通过SSH连接执行命令、传输文件等操作。在项目中引入JSch库后,我们就可以开始编写代码了。 1. **建立SSH连接** 在Java中,我们需要创建一个`JSch`实例,...

    java管理hdfs文件和文件夹项目hadoop2.4

    这个API提供了创建、读取、写入、删除文件和目录等操作。以下是一些关键的类和方法: 1. **配置Hadoop环境**:在Java程序中,你需要通过`Configuration`类设置HDFS的配置参数,例如HDFS的地址和端口。例如: ```...

    拷贝文件及文件夹(封装工具类)

    本篇将详细介绍如何创建一个用于拷贝文件及文件夹的工具类,并探讨其背后的Java I/O流操作。 首先,我们要理解Java中的I/O流。I/O(Input/Output)流是Java提供的一种处理输入输出数据的方式,它允许我们读取和写入...

    Java拷贝文件夹和删除文件夹代码实例

    下面是一个基本的文件夹拷贝方法: ```java public void copy(File src, File dest) throws IOException { if (dest.isFile()) { throw new RuntimeException(dest + "不是文件夹"); } File file = new File...

    文件及文件及的复制java代码

    通过以上分析,我们可以看到这段Java代码提供了一种简单有效的方式来复制文件及文件夹。它不仅能够复制单个文件,还能递归地复制整个文件夹及其内部的所有内容。这种实现方式适用于大多数基本的文件复制需求,并且...

    Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹

    使用Java完成以下操作:把一个文件夹内的所有文件拷贝到另一个文件夹,例如,在F盘中有a与b两个文件夹:f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,...

    java 实现文件夹的拷贝实例代码

    总结起来,Java中实现文件夹拷贝的基本思路是遍历源文件夹中的所有文件,逐个进行文件复制。同时,根据实际情况处理可能遇到的异常,以确保程序的健壮性。通过理解并扩展这个实例代码,我们可以构建更复杂、适应不同...

    java 文件操作类

    在Java编程语言中,文件操作是一项基础且至关重要的任务,涵盖了读取、写入、拷贝、复制以及对文件和文件夹的各种管理操作。Java提供了一系列的类和接口,使得开发者能够方便地处理磁盘上的文件和目录。下面将详细...

    文件批量拷贝、重命名工具类 for java.zip

    在Java编程中,文件批量操作是一项常见的...总的来说,这个压缩包提供的Java工具类是文件操作的基础组件,能够帮助开发者高效地执行批量文件拷贝和重命名操作,是构建任何涉及大量文件处理的Java应用程序时的有力助手。

    文件批量复制Java代码

    在Java编程中,批量复制文件是一项常见的任务,特别是在软件开发过程中,如Eclipse这样的集成开发环境(IDE)可能不提供批量导出第三方库的功能。此时,开发者需要自定义代码来实现这一需求。本文将深入探讨如何使用...

    Java文件的复制源代码

    在标题和描述中提到的"Java文件复制源代码",主要是指如何使用Java语言来实现文件的拷贝操作。这里我们将深入探讨如何通过Java标准库API来完成文件的复制,并且特别关注使用Swing组件的情况。 首先,我们从最基础的...

    文件夹拷贝

    总结来说,Java中实现文件夹拷贝主要依赖`java.io.File`和`java.nio.file.Files`类。通过递归遍历目录和使用流操作拷贝文件,我们可以轻松地在不同位置之间移动或复制文件夹结构。这个过程在软件开发中是不可或缺的...

    文件夹的拷贝.rar

    Java提供了丰富的I/O流类库来处理这些操作,主要涉及`java.io.File`、`java.io.FileInputStream`、`java.io.FileOutputStream`以及`java.nio.file`包中的类。 1. **使用传统I/O流进行文件拷贝**: - `...

    3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件

    为了高效地与HDFS交互,Java API 提供了一套丰富的工具和类库,使得开发者能够方便地进行文件的读写、上传、下载、遍历、查找、拷贝以及管理HDFS上的文件和目录。以下将详细讲解如何使用Java API 操作HDFS。 ### 一...

Global site tag (gtag.js) - Google Analytics