`
soongbo
  • 浏览: 88694 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java文件操作增强工具

阅读更多
Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了。如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归。

    下面是的一个解决方案,借助Apache Commons IO工具包来简单实现文件(夹)的复制、移动、删除、获取大小等操作.
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.*;

/**
* 文件工具箱
*
* @author leizhimin 2008-12-15 13:59:16
*/
public final class FileToolkit {
        private static final Log log = LogFactory.getLog(FileToolkit.class);

        /**
         * 复制文件或者目录,复制前后文件完全一样。
         *
         * @param resFilePath 源文件路径
         * @param distFolder    目标文件夹
         * @IOException 当操作发生异常时抛出
         */
        public static void copyFile(String resFilePath, String distFolder) throws IOException {
                File resFile = new File(resFilePath);
                File distFile = new File(distFolder);
                if (resFile.isDirectory()) {
                        FileUtils.copyDirectoryToDirectory(resFile, distFile);
                } else if (resFile.isFile()) {
                        FileUtils.copyFileToDirectory(resFile, distFile, true);
                }
        }

        /**
         * 删除一个文件或者目录
         *
         * @param targetPath 文件或者目录路径
         * @IOException 当操作发生异常时抛出
         */
        public static void deleteFile(String targetPath) throws IOException {
                File targetFile = new File(targetPath);
                if (targetFile.isDirectory()) {
                        FileUtils.deleteDirectory(targetFile);
                } else if (targetFile.isFile()) {
                        targetFile.delete();
                }
        }

        /**
         * 移动文件或者目录,移动前后文件完全一样,如果目标文件夹不存在则创建。
         *
         * @param resFilePath 源文件路径
         * @param distFolder    目标文件夹
         * @IOException 当操作发生异常时抛出
         */
        public static void moveFile(String resFilePath, String distFolder) throws IOException {
                File resFile = new File(resFilePath);
                File distFile = new File(distFolder);
                if (resFile.isDirectory()) {
                        FileUtils.moveDirectoryToDirectory(resFile, distFile, true);
                } else if (resFile.isFile()) {
                        FileUtils.moveFileToDirectory(resFile, distFile, true);
                }
        }


        /**
         * 重命名文件或文件夹
         *
         * @param resFilePath 源文件路径
         * @param newFileName 重命名
         * @return 操作成功标识
         */
        public static boolean renameFile(String resFilePath, String newFileName) {
                String newFilePath = StringToolkit.formatPath(StringToolkit.getParentPath(resFilePath) + "/" + newFileName);
                File resFile = new File(resFilePath);
                File newFile = new File(newFilePath);
                return resFile.renameTo(newFile);
        }

        /**
         * 读取文件或者目录的大小
         *
         * @param distFilePath 目标文件或者文件夹
         * @return 文件或者目录的大小,如果获取失败,则返回-1
         */
        public static long genFileSize(String distFilePath) {
                File distFile = new File(distFilePath);
                if (distFile.isFile()) {
                        return distFile.length();
                } else if (distFile.isDirectory()) {
                        return FileUtils.sizeOfDirectory(distFile);
                }
                return -1L;
        }

        /**
         * 判断一个文件是否存在
         *
         * @param filePath 文件路径
         * @return 存在返回true,否则返回false
         */
        public static boolean isExist(String filePath) {
                return new File(filePath).exists();
        }

        /**
         * 本地某个目录下的文件列表(不递归)
         *
         * @param folder ftp上的某个目录
         * @param suffix 文件的后缀名(比如.mov.xml)
         * @return 文件名称列表
         */
        public static String[] listFilebySuffix(String folder, String suffix) {
                IOFileFilter fileFilter1 = new SuffixFileFilter(suffix);
                IOFileFilter fileFilter2 = new NotFileFilter(DirectoryFileFilter.INSTANCE);
                FilenameFilter filenameFilter = new AndFileFilter(fileFilter1, fileFilter2);
                return new File(folder).list(filenameFilter);
        }

        /**
         * 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!)
         *
         * @param res            原字符串
         * @param filePath 文件路径
         * @return 成功标记
         */
        public static boolean string2File(String res, String filePath) {
                boolean flag = true;
                BufferedReader bufferedReader = null;
                BufferedWriter bufferedWriter = null;
                try {
                        File distFile = new File(filePath);
                        if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs();
                        bufferedReader = new BufferedReader(new StringReader(res));
                        bufferedWriter = new BufferedWriter(new FileWriter(distFile));
                        char buf[] = new char[1024];         //字符缓冲区
                        int len;
                        while ((len = bufferedReader.read(buf)) != -1) {
                                bufferedWriter.write(buf, 0, len);
                        }
                        bufferedWriter.flush();
                        bufferedReader.close();
                        bufferedWriter.close();
                } catch (IOException e) {
                        flag = false;
                        e.printStackTrace();
                }
                return flag;
        }
} 
分享到:
评论

相关推荐

    java文件上传下载工具类

    总结起来,"java文件上传下载工具类"是Java Web开发中不可或缺的部分,它封装了与文件操作相关的复杂逻辑,使开发者能够更专注于业务逻辑。通过创建这样的工具类,可以提高代码的可复用性和可维护性,同时降低出错的...

    Java转Pas文件官方工具(delphi的Pas文件)

    总的来说,"Java转Pas文件官方工具"为Java和Delphi之间的代码互操作提供了一个桥梁,它允许开发者利用Java的丰富库和工具集来增强Delphi项目,同时也能让Java开发者更轻松地进入Delphi开发领域。通过深入理解和有效...

    java文件与流操作code

    以上内容只是Java文件与流操作的冰山一角,实际开发中,开发者还需要结合具体场景,灵活运用这些工具,以实现高效、可靠的I/O操作。通过学习和实践,你可以逐步掌握这个领域的核心知识,并应用于各种项目中。

    java文件切工工具

    Java文件切割工具是一种实用程序,它允许用户将大型文件拆分为多个较小的部分,这对于大文件传输、存储优化或分布式处理非常有用。这个工具是自编写的,因此代码本身提供了宝贵的编程学习机会,尤其是对于那些对Java...

    JAVA文件操作大全

    Java.IO包是进行文件操作的主要工具,包含了众多类和接口,如File、FileReader/Writer、BufferedReader/Writer、InputStream/OutputStream等,用于处理输入输出流。 2. **File类** File类是文件和目录路径名的...

    Java文件管理器

    Java文件管理器是一款基于Java编程语言开发的软件,它的主要功能是模拟Windows操作系统中的文件管理系统,让用户能够方便地浏览、操作、管理和组织计算机上的文件和目录。作为一个专业的IT大师,我将详细介绍Java...

    Java实现文件加密工具 附源码

    总的来说,这个Java实现的文件加密工具是一个结合了位运算和异或操作的实用程序,提供了多样化的加密方式,适用于不同层次的用户需求。它不仅教育用户关于基本的加密原理,也为实际项目提供了安全数据保护的解决方案...

    Java版文件系统

    在Java编程环境中,实现一个操作系统级别的文件系统是一项挑战性的工作,因为这涉及到对底层硬件、内存管理和并发控制的理解。然而,通过使用Java提供的类库和API,我们可以构建一个模拟的文件系统,它能够进行基本...

    ClassFinal是一款java class文件安全加密工具

    ClassFinal正是为解决这些问题而设计的一款Java类文件安全加密工具。这款工具能够对编译后的`.class`文件进行加密处理,使得未经授权的用户无法轻易读取或反编译代码,从而提高代码的安全性。 ClassFinal的特点在于...

    Java开发工具包

    JDK1.8.0_66是Oracle公司发布的一个特定版本,它包含了Java运行时环境(JRE)、Java编译器(javac)、Java调试器(jdb)以及其他必要的工具,适用于Windows操作系统。 1. **Java运行时环境(JRE)**:这是执行Java...

    eclipse插件,打开java文件目录

    在本话题中,我们将深入探讨“eclipse插件,打开java文件目录”这一主题。 首先,了解Eclipse插件的基本概念。Eclipse作为一个开放平台,其核心架构允许开发者创建和集成自定义工具,这些工具就是我们所说的插件。...

    JAVA增量包打包工具

    作为开源软件,这个工具允许开发者查看和修改其源代码,可以根据自身需求进行定制,增强了灵活性和可扩展性。 总的来说,"JAVA增量包打包工具"是Java开发中的一款利器,它通过自动化、智能化的方式解决了大型项目...

    性能最好的Java文件上传组件

    "性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验。在这个场景中,我们提到了基于"COS"的Java文件上传组件。COS通常指...

    Java解析SO(ELF)文件

    同时,可能需要使用位操作和数据类型转换来处理二进制数据,因为Java默认处理的是基于字节的流,而ELF文件中的数据可能是16位、32位或64位的整数、浮点数等。 开发这样一个解析库可能会涉及到以下步骤: 1. 定义...

    JAVA对象以及数据的工具类

    比如,Files类(在Java NIO.2中引入)提供了大量的文件操作方法,如读写文件、检查文件属性等。而在网络编程中,HttpURLConnection和HttpClient类可以帮助我们发送HTTP请求和处理响应。 总的来说,Java工具类是对...

    JAVA数据库小工具

    由于JAVA的跨平台特性,这些数据库小工具往往能在Windows、Linux、Mac OS等操作系统上运行,增强了其适用性和灵活性。 8. **集成开发环境(IDE)集成** 一些工具可以与常用的Java IDE(如Eclipse、IntelliJ IDEA)...

    java class文件查看器

    总的来说,Java Class文件查看器是Java开发人员不可或缺的工具之一,它扩展了对编译后代码的理解,增强了问题诊断和代码分析的能力。通过熟练掌握此类工具,开发者可以更有效地调试代码,优化性能,并深入理解Java...

    Java必备工具包

    Java必备工具包是一个集合了多个对Java学习至关重要的资源的压缩文件。这个包包含了各种工具和文档,旨在帮助Java开发者和学习者提升他们的技能和理解。让我们逐一解析这些包含的文件,看看它们提供了哪些关键知识点...

    javatools数据导入导出工具

    2. **数据库支持**:作为一款DB工具,JavaTools应支持多种常见的数据库系统,如MySQL、Oracle、SQL Server、PostgreSQL等,允许用户连接并操作不同类型的数据库。 3. **数据导入导出功能**:JavaTools的核心功能是...

    反编译工具把Class文件转换为JAVA

    在Java编程语言中,开发者编写源代码(.java文件)并使用Java编译器(javac)将其编译成字节码(.class文件),这些字节码可以在Java虚拟机(JVM)上运行。然而,有时候我们可能需要查看或理解已编译的.class文件中...

Global site tag (gtag.js) - Google Analytics