`

J2EE常用工具类——文件操作类

 
阅读更多
package cn.org.jsjshuwei.org.cn" target="_blank">huwei.j2ee.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

/**
* 文件操作工具类
* 
* @author jshuwei.org.cn" target="_blank">huwei(jsjshuwei.org.cn" target="_blank">huwei.org.cn)
* @since 1.2
* 
*/
public class FileUtil {
    /**
     * 将字节流转换成字符串返回
     * 
     * @param is
     *            输入流
     * @return 字符串
     */
    public static String readFileByLines(InputStream is) {
        BufferedReader reader = null;
        StringBuffer sb = new StringBuffer();
        try {
            reader = new BufferedReader(new InputStreamReader(is));
            String tempString = null;
            while ((tempString = reader.readLine()) != null) {
                sb.append(tempString + "\n");
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        return sb.toString();
    }

    /**
     * 将文件一行一行的读成List返回
     * 
     * @param file
     *            需要读取的文件
     * @return 文件的一行就是一个List的Item的返回
     */
    public static List<String> readFileToList(File file) {
        BufferedReader reader = null;
        List<String> list = new ArrayList<String>();
        try {
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            while ((tempString = reader.readLine()) != null) {
                list.add(tempString);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        return list;
    }

    /**
     * 将文件按照一定的编码方式一行一行的读成List返回
     * 
     * @param file
     *            需要读取的文件
     * @param encodType
     *            字符编码
     * @return 文件的一行就是一个List的Item的返回
     */
    public static List<String> readFileToList(File file, String encodType) {
        BufferedReader reader = null;
        List<String> list = new ArrayList<String>();
        try {
            reader = new BufferedReader(new InputStreamReader(
                    new FileInputStream(file), encodType));
            String tempString = null;
            while ((tempString = reader.readLine()) != null) {
                if (!(tempString.charAt(0) >= 'a' && tempString.charAt(0) <= 'z'))
                    tempString = tempString.substring(1);
                list.add(tempString);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        return list;
    }

    /**
     * 将指定的字符串内容以指定的方式写入到指定的文件中
     * 
     * @param file
     *            需要写人的文件
     * @param content
     *            需要写入的内容
     * @param flag
     *            是否追加写入
     */
    public static void writeFile(File file, String content, Boolean flag) {
        try {
            if (!file.exists())
                file.createNewFile();
            FileWriter writer = new FileWriter(file, flag);
            writer.write(content);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 将指定的字符串内容以指定的方式及编码写入到指定的文件中
     * 
     * @param file
     *            需要写人的文件
     * @param content
     *            需要写入的内容
     * @param flag
     *            是否追加写入
     * @param encodType
     *            文件编码
     */
    public static void writeFile(File file, String content, Boolean flag,
            String encodType) {
        try {
            FileOutputStream writerStream = new FileOutputStream(file, flag);
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                    writerStream, encodType));
            writer.write(content);
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 拷贝文件夹
     * 
     * @param oldPath
     *            源目录
     * @param newPath
     *            目标目录
     */
    public static 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) {
            e.printStackTrace();
        }
    }

    /**
     * 将文件重命名
     * 
     * @param oldName
     *            源文件名
     * @param newName
     *            新文件名
     */
    public static void reName(String oldName, String newName) {
        File oldF = new File(oldName);
        File newF = new File(newName);
        oldF.renameTo(newF);
    }

    /**
     * 将一个文件列表文件中所有文件拷贝到指定目录中
     * 
     * @param listFile
     *            包含需要拷贝的文件的列表的文件,每个文件写在一行
     * @param targetFloder
     *            目标目录
     */
    public static void copyFilesFromList(String listFile, String targetFloder) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(listFile));
            String tempString = null;
            while ((tempString = reader.readLine()) != null) {
                copyFile(tempString, targetFloder);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 拷贝文件
     * 
     * @param oldPath
     *            源文件
     * @param newPath
     *            目标文件
     */
    public static void copyFile(String oldPath, String newPath) {
        try {
            File temp = new File(oldPath);
            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();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 删除文件列表
     * 
     * @param files
     *            需要删除的文件/文件夹列表
     * @return 删除成功true,否则返回false
     */
    public static boolean deleteFiles(List<String> files) {
        boolean flag = true;
        for (String file : files) {
            flag = delete(file);
            if (!flag)
                break;
        }
        return flag;
    }

    /**
     * 删除文件或文件夹
     * 
     * @param fileName
     *            要删除的文件名
     * @return 删除成功返回true,否则返回false
     */
    public static boolean delete(String fileName) {
        File file = new File(fileName);
        if (!file.exists()) {
            return false;
        } else {
            if (file.isFile())
                return deleteFile(fileName);
            else
                return deleteDirectory(fileName);
        }
    }

    /**
     * 删除文件
     * 
     * @param fileName
     *            要删除的文件的文件名
     * @return 删除成功返回true,否则返回false
     */
    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        if (file.exists() && file.isFile())
            return file.delete();
        return false;
    }

    /**
     * 删除目录及目录下的文件
     * 
     * @param dir
     *            要删除的目录路径
     * @return 删除成功返回true,否则返回false
     */
    public static boolean deleteDirectory(String dir) {
        if (!dir.endsWith(File.separator))
            dir = dir + File.separator;
        File dirFile = new File(dir);
        if ((!dirFile.exists()) || (!dirFile.isDirectory()))
            return false;
        boolean flag = true;
        File[] files = dirFile.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()) {
                flag = deleteFile(files[i].getAbsolutePath());
                if (!flag)
                    break;
            } else if (files[i].isDirectory()) {
                flag = deleteDirectory(files[i].getAbsolutePath());
                if (!flag)
                    break;
            }
        }
        if (!flag) {
            return false;
        }
        return dirFile.delete();
    }
}

 

分享到:
评论

相关推荐

    java常用工具类打包下载

    J2EE常用工具类汇总 J2EE常用工具类—Value Object工具类 J2EE常用工具类—Json工具 ...J2EE常用工具类——文件操作类 J2EE常用工具类——邮件处理类(javaMail发送邮件) J2EE常用工具类——字符串工具类

    J2EE项目实训——UML及设计模式课件.rar

    "J2EE项目实训——UML及设计模式课件.rar"这个压缩包文件显然是针对学习J2EE开发和软件设计的学生或专业人士准备的资源。其中包含的两个源码项目——在线商城项目源程序和BBS论坛社区项目源程序,都是典型的J2EE应用...

    项目开发\J2EE项目实训——UML及设计模式

    在IT行业中,项目开发是一项复杂而系统的工作,尤其是在J2EE平台上进行的项目实训,它涉及到多种技术和工具的综合运用。本实训主题聚焦于“UML(统一建模语言)”与“设计模式”,这两者在软件工程领域扮演着至关...

    j2ee项目实训——hibernate框架技术

    在J2EE项目开发中,Hibernate是一个非常重要的持久层框架,它简化了数据库与Java对象之间的交互,使得开发者可以更加专注于业务逻辑,而非繁琐的SQL语句编写。本实训主要围绕Hibernate框架技术展开,旨在帮助你深入...

    轻量级J2EE企业应用实战——Struts+Spring+Hibernate整合开发 源码第二部分

    `js`目录可能包含了JavaScript文件,这些文件可能用于前端交互,如表单验证、动态加载数据等。JavaScript与SSH后端框架协同工作,提供更好的用户体验。 总的来说,这个源码包展示了如何使用SSH框架进行企业级Web...

    J2EE示例项目——注册

    6. **实体类**:表示数据库表的Java类,它们通过Hibernate注解或XML映射文件与数据库表进行关联。 7. **数据库表**:如`users`表,存储用户注册信息。 通过这个项目,开发者可以学习到如何整合Struts和Hibernate,...

    J2EE综合实验配套项目——项目文件可配套J2EE综合实验报告一起使用

    学习者可能需要配置实体类,理解注解,以及如何通过EntityManager进行数据操作。 6. **MVC(Model-View-Controller)模式**:这是一种常见的软件设计模式,用于分离应用的业务逻辑、视图展示和用户交互。项目可能...

    eclipse开发J2EE项目系列(1)——Struts2框架搭建

    开始之前,确保你已经安装了Eclipse IDE,这是Java开发的常用工具,支持丰富的集成开发环境。同时,你也需要在本地环境中配置好Java Development Kit (JDK) 和Apache Tomcat服务器,这两个是运行和部署J2EE应用的...

    J2EE——MyEclipse实现网页的登录和注册

    在J2EE(Java 2 Platform, Enterprise Edition)开发中,MyEclipse是一个非常流行的集成开发环境(IDE),它提供了丰富的工具集来帮助开发者构建、测试和部署企业级应用程序。本教程将详细介绍如何使用MyEclipse来...

    JavaUtils:A collection of utils to develop Java. —— Java 常用工具类整合

    个人开发用的Java常用工具类的集合。 主要用于封装 J2EE 开发过程中的常见操作,避免大量的重复功能代码,提升开发效率,并降低耦合。 ##Guide src/com.cnblogs.honoka.utils.StringUtil.java:字符串处理工具类 src...

    j2ee OA系统

    《J2EE OA系统详解——基于JSP+JavaBean的简单实现》 OA(Office Automation)系统,即办公自动化系统,是一种广泛应用于企业内部管理的信息化工具,它旨在提高工作效率,优化工作流程,促进信息共享。本文将深入...

    实用J2EE框架学习笔记

    本笔记将深入探讨J2EE的核心框架——Struts、Spring和Hibernate,统称SSH,这是J2EE开发中常用的技术栈。 **Struts框架** Struts是MVC(Model-View-Controller)设计模式的一个实现,主要用于处理Web应用的用户...

    HNU编程新技术实务实验二——HTML以及J2EE简单编程

    在"编程新技术实务实验二——HTML以及J2EE简单编程"中,学生将学习如何编写基本的HTML文档,包括定义标题(`&lt;h1&gt;`至`&lt;h6&gt;`)、段落(`&lt;p&gt;`)、链接(`&lt;a&gt;`)、图像(`&lt;img&gt;`)等元素。此外,还将涉及表格(`&lt;table&gt;`...

    J2EE开发常用框架.pdf

    以下是Java EE开发中常用的两个框架——Struts和Spring的详细解释: 1. Struts框架: Struts是一个经典的MVC(Model-View-Controller)框架,基于Servlet和JSP技术。它的核心组成部分包括: - **模型(Model)**:...

    java毕业设计——基于J2EE的B2C电子商务系统开发

    【Java毕业设计——基于J2EE的B2C电子商务系统开发】 在计算机科学与技术领域,尤其是软件工程专业,毕业设计是一项重要的实践性学习环节,它要求学生将所学理论知识应用于实际项目中,以检验和提升自己的技能。本...

    j2ee项目中所用到的包

    这个压缩包“j2ee项目中所用到的包”包含了在J2EE项目中常用的框架和库,使得开发者能够快速搭建开发环境,减少寻找和配置组件的时间,提高开发效率。 首先,我们来看看其中的一个关键组件——Hibernate。Hibernate...

    J2EE学生学籍管理系统

    本项目——“J2EE学生学籍管理系统”,采用Hibernate和Struts两大框架,结合Oracle数据库,旨在实现高效、稳定的学生学籍信息管理。 首先,让我们深入了解Hibernate框架。Hibernate是一个强大的对象关系映射(ORM)...

Global site tag (gtag.js) - Google Analytics