`
反求诸己
  • 浏览: 535595 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

Java创建、重命名、删除文件和文件夹

 
阅读更多

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

    下面是的一个解决方案,借助Apache Commons IO工具包(commons-io-1.1.jar)来简单实现文件(夹)的复制、移动、删除、获取大小等操作。

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生成、修改文件夹和文件名.rar

    Java生成、修改文件夹和文件名,Java创建目录或文件夹,并修改、删除、重命名文件夹或文件名称,使用进行的文件操作实例。  super("目录和文件的创建、删除和更名"); //调用父类构造函数  jtfPath=new ...

    文件管理系统java源代码

    2.3基本功能:(1)文件和目录的基本操作,比如文件和目录的创建、删除、复制、移动、重命名和文件内容的显示,文件和目录的基本检索,快速文件搜索采用多线程技术加快文件的检索速度;(2)进程和线程的使用,进程和...

    java对文件夹、文件、TXT的操作

    java对文件夹,文件,txt的操作,删除,创建,写入,重命名、遍历。

    CKFinder 文件管理器 v2.6.2.1 for java

    提供文件夹树形结构(Folders tree)导航菜单,多语言支持(自动探测用),支持创建/重命名/删除文件和文件夹,集成FCKeditor在线编辑器。软件共包含了42种不同类型的语言,其中就有中文的简体和繁体两种类型。

    java文件读写操作大全

    java文件读写操作大全 一、获得控制台用户输入的信息 二、复制文件 三、写文件 四、文件重命名 五、转移文件目录 六、读文件 七、创建文件(文件夹) 八、删除文件(目录)

    Java高级程序设计:第9章-IO.pptx

    创建文件夹;删除文件(夹);文件重命名;9;10;输入输出流(I/O Stream);输入流(Input Stream);输出流(Output Stream);文本文件 vs 二进制文件;文本文件 vs 二进制文件;文本文件 vs 二进制文件;文本I/O类层次结构;...

    第4章 HDFS 2 4.1. 简介 2 4.1.1. 概述 2 4.1.2. 组成架构 4 4.1.3. HDFS文件块大小

    4.3.6. 编写Java代码——向HDFS文件系统创建文件夹 24 4.3.7. 编写Java代码——文件上传 27 4.3.8. 编写Java代码——删除文件夹 30 4.3.9. 编写Java代码——重命名文件 31 4.3.10. 编写Java代码——遍历文件夹 32 ...

    java中文件操作大全

    java中文件操作大全 的内容有 一.获得控制台用户输入的信息二.复制文件三.写文件四.文件重命名五.转移文件目录 六.读文件七.创建文件(文件夹)八.删除文件(目录)

    BatchFiles 多功能批量文件处理系统

    replace)、插入特定字符到文件名中(-insert)、文件名截取(-intercept)、文件名的大小写转换(-toggle)和重命名恢复(-recovery)、文件批量删除、文件/夹批量随机创建、文件批量复制和拷贝。 本程序之所以...

    Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)

    文件夹的管理,创建、删除、重命名。 文件的分享,支持通过链博口二维码的分享方式等等。 二、项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目...

    Java项目:在线网盘系统(java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP)

    文件夹的管理,创建、删除、重命名。 文件的分享,支持通过链接和二维码的分享方式等等,以及管理员对用户的管理等等。 二、项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,...

    java操作文件

    里面附带的例子关于java操作文件包括创建文件夹,创建文件,拷贝文件,删除文件,移除文件,向文件内写入内容,给文件重命名。(源文件里面有比较详细的说明哦!希望对大家学习java有所帮助)

    java版资源管理器

    java版资源管理器,能够读取本地计算机所有目录和文件,可以进行创建文件夹,文件,复制,粘贴,删除,查看属性,重命名等

    ckfinder_java_jb51.rar_java 树形菜单_树形菜单

    提供文件夹树形结构(Folders tree)导航菜单,多语言支持(自动探测用),支持创建/重命名/删除文件和文件夹,集成FCKeditor在线编辑器。软件共包含了42种不同类型的语言,其中就有中文的简体和繁体两种类型。

    java项目-第44期ssm项目哈哈网盘系统.zip

    文件夹的管理,创建、删除、重命名。 上传文件:选取文件、上传文件、删除文件、终止上传。 2、运行环境 Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: Spring + ...

    蓝牙FTP浏览器 FOR JAVA手机 Bluetooth File Transfer OBEX FTP

    Bluetooth File Transfer OBEX FTP 支持通过蓝牙来连接其他设备,并可以在其他设备商进行文件传送,并且可以在你的手机上对目标设备的文件或者文件夹进行修改,创建,重命名和删除操作。Bluetooth File Transfer ...

Global site tag (gtag.js) - Google Analytics