`

JAVA文件、文件夹操作

    博客分类:
  • Java
阅读更多
import java.io.*;

/**
 * Created with GQ.
 * User: Administrator
 * Date: 13-10-31
 * Time: 上午8:58
 * To change this template use File | Settings | File Templates.
 */
public class FileOperate {
    private String message;

    public FileOperate() {
    }

    /**
     * 读取文本文件内容
     *
     * @param filePathAndName 带有完整绝对路径的文件名
     * @param encoding        文本文件打开的编码方式
     * @return 返回文本文件的内容
     */
    public String readTxt(String filePathAndName, String encoding) throws IOException {
        encoding = encoding.trim();
        StringBuffer str = new StringBuffer("");
        String st = "";
        try {
            FileInputStream fs = new FileInputStream(filePathAndName);
            InputStreamReader isr;
            if (encoding.equals("")) {
                isr = new InputStreamReader(fs);
            } else {
                isr = new InputStreamReader(fs, encoding);
            }
            BufferedReader br = new BufferedReader(isr);
            try {
                String data = "";
                while ((data = br.readLine()) != null) {
                    str.append(data + " ");
                }
            } catch (Exception e) {
                str.append(e.toString());
            }
            st = str.toString();
        } catch (IOException es) {
            System.out.println("读取文本文件内容出错:");
            es.printStackTrace();
            st = "";
        }
        return st;
    }

    /**
     * 新建目录
     *
     * @param folderPath 目录
     * @return 返回目录创建后的路径
     */
    public String createFolder(String folderPath) {
        String txt = folderPath;
        try {
            File myFilePath = new File(txt);
            txt = folderPath;
            if (!myFilePath.exists()) {
                myFilePath.mkdir();
            }
        } catch (Exception e) {
            System.out.println("创建目录操作出错:");
            e.printStackTrace();
        }
        return txt;
    }

    /**
     * 多级目录创建
     *
     * @param folderPath 准备要在本级目录下创建新目录的目录路径 例如 c:/
     * @param paths      无限级目录参数,各级目录以单数线区分 例如 2013/10/31
     * @return
     */
    public String createFolders(String folderPath, String paths) {
        //创建文件夹
        // paths = new SimpleDateFormat("yyyy/MM/dd").format(new Date());
        try {
            File f = new File(folderPath + paths);
            if (!f.exists())
                f.mkdirs();
        } catch (Exception e) {
            System.out.println("多级目录创建出错:");
            e.printStackTrace();
        }
        return folderPath + paths;
    }


    /**
     * 新建文件
     *
     * @param filePathAndName 文本文件完整绝对路径及文件名
     * @param fileContent     文本文件内容
     * @return
     */
    public void createFile(String filePathAndName, String fileContent) {

        try {
            String filePath = filePathAndName;
            filePath = filePath.toString();
            File myFilePath = new File(filePath);
            if (!myFilePath.exists()) {
                myFilePath.createNewFile();
            }
            FileWriter resultFile = new FileWriter(myFilePath);
            PrintWriter myFile = new PrintWriter(resultFile);
            String strContent = fileContent;
            myFile.println(strContent);
            myFile.close();
            resultFile.close();
        } catch (Exception e) {
            System.out.println("创建文件操作出错:");
            e.printStackTrace();
        }
    }


    /**
     * 有编码方式的文件创建
     *
     * @param filePathAndName 文本文件完整绝对路径及文件名
     * @param fileContent     文本文件内容
     * @param encoding        编码方式 例如 GBK 或者 UTF-8
     * @return
     */
    public void createFile(String filePathAndName, String fileContent, String encoding) {

        try {
            String filePath = filePathAndName;
            filePath = filePath.toString();
            File myFilePath = new File(filePath);
            if (!myFilePath.exists()) {
                myFilePath.createNewFile();
            }
            PrintWriter myFile = new PrintWriter(myFilePath, encoding);
            String strContent = fileContent;
            myFile.println(strContent);
            myFile.close();
        } catch (Exception e) {
            System.out.println("有编码方式的文件创建出错:");
            e.printStackTrace();
        }
    }


    /**
     * 删除文件
     *
     * @param filePathAndName 文本文件完整绝对路径及文件名
     * @return Boolean 成功删除返回true遭遇异常返回false
     */
    public boolean delFile(String filePathAndName) {
        boolean bea = false;
        try {
            String filePath = filePathAndName;
            File myDelFile = new File(filePath);
            if (myDelFile.exists()) {
                myDelFile.delete();
                bea = true;
            } else {
                bea = false;
            }
        } catch (Exception e) {
            System.out.println(filePathAndName + "删除文件操作出错:");
            e.printStackTrace();
        }
        return bea;
    }


    /**
     * 删除文件夹
     *
     * @param folderPath 文件夹完整绝对路径
     * @return
     */
    public void delFolder(String folderPath) {
        try {
            delAllFile(folderPath); //删除完里面所有内容
            String filePath = folderPath;
            filePath = filePath.toString();
            File myFilePath = new File(filePath);
            myFilePath.delete(); //删除空文件夹
        } catch (Exception e) {
            message = ("删除文件夹操作出错");
        }
    }


    /**
     * 删除指定文件夹下所有文件
     *
     * @param path 文件夹完整绝对路径
     * @return
     */
    public boolean delAllFile(String path) {
        boolean bea = false;
        File file = new File(path);
        if (!file.exists()) {
            return bea;
        }
        if (!file.isDirectory()) {
            return bea;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            } else {
                temp = new File(path + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
                temp.delete();
            }
            if (temp.isDirectory()) {
                delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
                delFolder(path + "/" + tempList[i]);//再删除空文件夹
                bea = true;
            }
        }
        return bea;
    }


    /**
     * 复制单个文件
     *
     * @param oldPathFile 准备复制的文件源
     * @param newPathFile 拷贝到新绝对路径带文件名
     * @return
     */
    public void copyFile(String oldPathFile, String newPathFile) {
        try {
            int bytesum = 0;
            int byteread = 0;
            File oldfile = new File(oldPathFile);
            if (oldfile.exists()) { //文件存在时
                InputStream inStream = new FileInputStream(oldPathFile); //读入原文件
                FileOutputStream fs = new FileOutputStream(newPathFile);
                byte[] buffer = new byte[1444];
                while ((byteread = inStream.read(buffer)) != -1) {
                    bytesum += byteread; //字节数 文件大小
                    System.out.println(bytesum);
                    fs.write(buffer, 0, byteread);
                }
                inStream.close();
            }
        } catch (Exception e) {
            message = ("复制单个文件操作出错");
        }
    }


    /**
     * 复制整个文件夹的内容
     *
     * @param oldPath 准备拷贝的目录
     * @param newPath 指定绝对路径的新目录
     * @return
     */
    public void copyFolder(String oldPath, String newPath) {
        try {
            new File(newPath).mkdirs(); //如果文件夹不存在 则建立新文件夹
            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) {
            message = "复制整个文件夹内容操作出错";
        }
    }


    /**
     * 移动文件
     *
     * @param oldPath
     * @param newPath
     * @return
     */
    public void moveFile(String oldPath, String newPath) {
        copyFile(oldPath, newPath);
        delFile(oldPath);
    }


    /**
     * 移动目录
     *
     * @param oldPath
     * @param newPath
     * @return
     */
    public void moveFolder(String oldPath, String newPath) {
        copyFolder(oldPath, newPath);
        delFolder(oldPath);
    }

    public String getMessage() {
        return this.message;
    }
}
 
分享到:
评论

相关推荐

    Java 遍历文件夹内文件

    在Java编程中,遍历文件夹内的文件是一项常见的任务,特别是在处理文件系统操作时。这个话题涉及到了Java的I/O(输入/输出)流、文件系统API和递归概念。以下是对这一主题的详细讲解: 首先,Java提供了一个强大的`...

    java移动文件夹下所有文件

    在Java编程语言中,移动文件夹下所有文件是一项常见的任务,尤其在处理文件系统操作时。这个场景描述了一个程序能够遍历指定文件夹中的所有文件,并将它们移动到另一个目标文件夹,同时保持原有的文件结构。这样的...

    JAVA 对文件夹操作

    ### JAVA对文件夹操作知识点详解 #### 一、概述 在Java编程中,对文件的操作是一项非常基础且重要的技能。无论是简单的文件读写还是复杂的文件系统管理,掌握这些技巧对于开发高质量的应用程序至关重要。本篇内容...

    java创建和删除文件夹、文件

    System.out.println("新建文件夹操作出错"); e.printStackTrace(); } } ``` #### 二、删除文件夹 删除文件夹可以通过`File`类的`delete()`方法来实现。需要注意的是,如果文件夹非空,则必须先删除其中的所有...

    java删除指定文件夹下文件

    在Java编程中,删除文件是一项常见的操作,尤其是在处理文件系统任务时。在JDK 7及以上版本中,Java提供了一种更加高效且灵活的方式来删除文件,包括递归删除整个文件夹及其子文件,这主要通过`java.nio.file`包中的...

    java 文件及文件夹 操作源码

    此文件支持对文件及文件夹结构的多种操作,其中包括: 读取文本文件内容 遍历指定路径下指定后缀的所有文件 新建目录 多级目录创建 新建文件 有编码方式的文件创建 删除文件 删除文件夹 删除指定文件夹下所有文件 ...

    java操作文件、文件夹

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出以下几个重要的Java知识点,这些知识点与文件操作密切相关: ### 1. 文件和目录的基本操作 #### 1.1 创建目录(文件夹) ```java public static void...

    java文件和文件夹操作大全

    ### Java文件和文件夹操作大全:深度解析与实践指南 #### 一、创建文件夹与文件 在Java中,创建文件夹与文件是基础而重要的功能。通过`java.io.File`类,我们可以轻松实现这些操作。 **创建文件夹示例**: ```...

    Java文件、文件夹权限修改的两种方法

    Java文件、文件夹权限修改的两种方法 在Java中,文件和文件夹权限的修改是非常重要的,特别是在Linux和Unix系统下。今天,我们将介绍两种修改文件和文件夹权限的方法,即使用File类和NIO方式。 使用File类 File类...

    java统计文件夹大小

    在Java编程中,统计文件夹大小是一项常见的任务,特别是在处理大量数据或者文件系统操作时。在JDK 7及以上版本中,Java引入了新的`java.nio.file`包,提供了更高效且灵活的方式来处理文件和目录。这个功能实现利用了...

    java 创建文件夹或文件

    根据提供的文件信息,本文将详细解释Java中如何利用文件流动态创建文件夹或文件的关键知识点。主要内容包括: 1. Java创建文件的基本原理。 2. 如何使用`java.io.File`类来创建文件与目录。 3. 代码示例分析:创建...

    运用java压缩文件夹并备份至目标文件夹

    在Java编程语言中,压缩...通过`ZipOutputStream`和`ZipFile`,我们可以方便地完成文件夹的压缩和备份,以及解压缩到目标文件夹的操作。在实际开发中,我们还需要考虑错误处理、文件权限等问题,以确保程序的健壮性。

    java创建和删除文件夹、文件.doc

    System.out.println("新建文件夹操作出错"); e.printStackTrace(); } } ``` **注意点:** 1. **目录结构检查**:在创建文件夹之前,首先检查该路径是否存在。 2. **mkdir()与mkdirs()的区别**: - `mkdir()`:...

    java删除文件夹的代码

    在Java编程中,删除文件或文件夹是一项常见的操作。这里我们将深入探讨如何使用Java的`java.io.File`类来实现这一功能,特别是不使用递归而采用循环的方式。首先,让我们了解一下`File`类的基本概念。 `java.io....

    Java获取文件夹大小、文件大小,文件个数

    在Java编程中,获取文件或文件夹的大小以及文件个数是常见的操作,尤其是在处理文件上传、存储管理和性能监控等场景。以下将详细介绍如何通过Java实现这些功能。 首先,我们来探讨如何获取单个文件的大小。在Java中...

    JAVA创建文件夹文件.doc

    在Java编程中,创建文件夹和文件是一项常见的任务,尤其在处理Web应用时,如上传和下载文件。下面将详细解释如何使用Java来创建文件夹、文件以及删除文件。 首先,要创建一个文件夹,Java提供了`java.io.File`类。...

    java中实现复制文件和文件夹

    在Java编程语言中,复制文件和文件夹是一个常见的任务,特别是在处理文件系统操作时。这里我们将深入探讨如何使用Java实现这个功能。 首先,让我们来看一下标题中提到的`copyFile`方法,这是一个用于复制单个文件的...

    java 文件以及文件夹操作代码

    ### Java 文件及文件夹操作详解 #### 一、概述 在Java编程中,对文件及文件夹的操作是一项基本且重要的技能。本文将详细介绍如何使用Java进行文件和文件夹的基本操作,包括创建文件/文件夹、删除文件/文件夹等。 ...

    java判断文件或文件夹

    Java语言中判断文件或文件夹的存在性是一种基础操作,开发者在编写Java程序时经常需要判断文件或文件夹是否存在,以便进行相应的操作。在本文中,我们将详细介绍如何使用Java语言判断文件或文件夹的存在性。 一、...

    java文件夹及文件复制

    在Java编程语言中,文件和文件夹的复制是一项常见的任务,尤其在系统迁移、数据备份或者软件部署等场景中。本教程将详细讲解如何使用Java的文件I/O(Input/Output)功能,通过递归的方式来实现文件及文件夹的复制,...

Global site tag (gtag.js) - Google Analytics