我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用apache的FileUtils处理文件的复制等操作方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用apache的FileUtils处理文件的复制等操作方式

本篇内容主要讲解“怎么用apache的FileUtils处理文件的复制等操作方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用apache的FileUtils处理文件的复制等操作方式”吧!

平时对一些文件进行操作,比如说写文件,读文件,复制一个文件等,使用原生File操作需要读取源文件,生成流对象,再写入一个新的文件中一系列过程,使用apache commons-io帮我们封装了这些实现,有些操作可以很容易的使用它的api来实现。

这里使用2.6版本,javadoc参照commons-io-2.6

1、pom依赖加入commons-io

<dependency>    <groupId>commons-io</groupId>    <artifactId>commons-io</artifactId>    <version>2.6</version></dependency>

2、常用API使用

2.1 获取文件

File fileA = FileUtils.getFile(testPath + "a.txt");// 最终路径为入参拼接起来即testPath + "a.txt"File fileAA = FileUtils.getFile(testPath, "a.txt");// 获取某个目录下的文件,后面参数是拼接而成的File fileAAA = FileUtils.getFile(new File(testPath), "a.txt");

2.2 获取临时目录和用户目录

// 获取临时目录路径// 每种操作系统有所不同,Windows一般是C:\DOCUME~1\用户~1\LOCALS~1\Temp,Solaris一般是:/var/tmp/,Linux和Mac OS X一般是:/tmp// Windows的java.io.tmpdir属性值可以看环境变量->用户变量中的TMP。File tempDirectory = FileUtils.getTempDirectory();String tempDirectoryPath = FileUtils.getTempDirectoryPath();File userDirectory = FileUtils.getUserDirectory();String userDirectoryPath = FileUtils.getUserDirectoryPath();System.out.println(tempDirectoryPath + "  -  " + tempDirectory);System.out.println(userDirectoryPath + "  -  " + userDirectory.getName());

2.3 创建文件

// 创建文件(实现与Unix上“ touch”实用程序相同的行为。它会创建一个大小为0的新文件,或者如果文件已经存在,则将其打开和关闭而不进行修改,而是更新文件的日期和时间。)File fileD = new File(testPath + "d.txt");FileUtils.touch(fileD);

2.4 写内容到文件

// 写文件File fileB = new File(testPath + "b.txt");if (!fileB.exists()) {    fileB.createNewFile();}// 通过字节写入文件FileUtils.writeByteArrayToFile(fileB, "Hello, smile".getBytes());FileUtils.writeByteArrayToFile(fileB, "Hello, sunshine".getBytes(), true);// 通过行写入文件(覆盖)FileUtils.writeLines(fileB, Lists.newArrayList("春夏秋冬, 三餐四季,只愿有你"));// 通过行写入文件(追加)FileUtils.writeLines(fileB, Lists.newArrayList("春风很柔,夏风很烈,秋风清爽,东风凛冽,你就是春夏秋冬的风"), true);// 字符串写入,不换行追加FileUtils.writeStringToFile(fileB, "唯美有你", "UTF-8", true);FileUtils.writeStringToFile(fileB, "哪里有你", Charset.defaultCharset(), true);File fileC = new File(testPath + "c.txt");if (!fileC.exists()) {    fileC.createNewFile();}//  流操作fileInputStream   = FileUtils.openInputStream(fileB);//  fileOutputStream = FileUtils.openOutputStream(fileC);fileOutputStream = FileUtils.openOutputStream(fileC, true);// 字节数组byte[] buffer = new byte[1024];// 将文件内容写到文件中while (fileInputStream.read(buffer) != -1) {    fileOutputStream.write(buffer);}

2.5 读取文件内容

// 按行读取文件内容List list = FileUtils.readLines(fileAAA, "UTF-8");System.out.println(list.size() > 0 ? list.get(0) : "" + list.size());List<String> lines = FileUtils.readLines(fileB, Charset.defaultCharset());System.out.println(lines.size() > 0 ? lines.get(0) : "" + lines.size());// 读取文件内容为字节byte[] bytes = FileUtils.readFileToByteArray(fileB);System.out.println(new String(bytes));// 读取文件为StringString fileToString = FileUtils.readFileToString(fileB, "UTF-8");System.out.println(fileToString);String fileToString2 = FileUtils.readFileToString(fileB, Charset.defaultCharset());System.out.println(fileToString2);

2.6 获取目录文件及目录

// recursive是否递归查询,这里查询.txt文件,也可以指定其他格式的,如果extensions为null则查询所有类型的文件Collection<File> listFiles = FileUtils.listFiles(new File(testPath), null, true);Collection<File> listFiles2 = FileUtils.listFiles(new File(testPath), new String[]{"txt"}, true);// 获取某个目录下的所有文件 TrueFileFilter.INSTANCE表示匹配所有的Collection<File> files1 = FileUtils.listFiles(new File(testPath), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);// 获取某个目录下的所有文件和文件目录 TrueFileFilter.INSTANCE表示匹配所有的Collection<File> files2 = FileUtils.listFilesAndDirs(new File(testPath), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);

2.7 文件内容比较

// 文件内容比较boolean aa = FileUtils.contentEquals(fileA, fileAA);boolean ab = FileUtils.contentEquals(fileA, fileB);

2.8 文件或目录拷贝

// 文件复制,将文件A的内容复制给文件DFileUtils.copyFile(fileA, fileD);// 把文件复制到某个目录下FileUtils.copyFileToDirectory(fileD, new File(testPath + "inner"));// 把某个目录拷贝到另外一个目录FileUtils.copyDirectoryToDirectory(new File(testPath + "inner"), new File(testPath + "other"));// 把文件或目录拷贝到指定目录FileUtils.copyToDirectory(fileB, new File(testPath + "inner"));// 文件目录复制FileUtils.copyDirectory(new File(testPath + "inner"), new File(testPath + "first"));

2.9 文件或目录删除

// 删除目录FileUtils.deleteDirectory(new File(testPath + "first"));// 删除文件或目录FileUtils.deleteQuietly(fileD);FileUtils.deleteQuietly(new File(testPath + "first"));

这就是FileUtils工具类的一些常用操作API使用。

Github源码参照

apache commons-io的FileUtils.copyFile简单地复制文件

一般的方法,我们要复制一个文件,可能需要读取源文件,生成流对象,再写入一个新的文件中,使用apache commons-io很容就可以处理文件的复制。

下面的例子演示我们怎样使用FileUtils.copyFile方法在同一个文件夹复制文件和使用FileUtils.copyFileToDirectory方法复制到指定的文件夹中。其中System.getProperty("java.io.tmpdir")为通过JVM读取java.io.tmpdir属性取得临时文件夹,每种操作系统有所不同,Windows一般是C:\DOCUME~1\用户~1\LOCALS~1\Temp,Solaris一般是:/var/tmp/,Linux和Mac OS X一般是:/tmp,Windows的java.io.tmpdir属性值可以看环境变量->用户变量中的TMP。

当然我们一般使用的是绝对或相对路径,如要复制到F:\ajava目录中,我们只需将targetDir改成File targetDir = new File("F:\\ajava");运行后就可以看到结果。

package ajava.sample.apache;import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;public class AjavaFileCopyExample {       public static void main(String[] args)       {               // 源File对象               File source = new File("ajava.txt");                            // 备份的File对象               File target = new File("ajava-backup.txt");                            //通过JVM读取java.io.tmpdir属性取得临时文件夹               File targetDir = new File(System.getProperty("java.io.tmpdir"));                            try               {                       //在同一个文件夹复制文件                       System.out.println("复制 " + source + " 文件到 " + target);                       FileUtils.copyFile(source, target);                                            // 根据指定的文件夹复制                       System.out.println("复制 " + source + " 文件到" + targetDir + "目录");                       FileUtils.copyFileToDirectory(source, targetDir);               } catch (IOException e)               {                       // Errors will be reported here if any error occures during copying                       // the file                       e.printStackTrace();               }       }}

输出结果为:

复制 ajava.txt 文件到 ajava-backup.txt

复制 ajava.txt 文件到C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp目录

再查看对应的文件夹,就可以发现备份文件。

到此,相信大家对“怎么用apache的FileUtils处理文件的复制等操作方式”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用apache的FileUtils处理文件的复制等操作方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用apache的FileUtils处理文件的复制等操作方式

本篇内容主要讲解“怎么用apache的FileUtils处理文件的复制等操作方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用apache的FileUtils处理文件的复制等操作方式”吧!
2023-06-20

windows xp系统移动和复制文件与文件夹的多种方式及操作步骤

移动是指将所选文件或文件夹移动到指定位置,而复制是指为所选文件或文件夹创建副本。下面我们小编就來介绍移动和复制文件或文件夹的方法。 1.使用任务窗格 步骤1:在Windows xp系统中,打开放置文件或文件夹的磁盘窗口,选中需要移动或复制的
2023-05-30

怎么利用python实现windows的批处理及文件夹操作

今天就跟大家聊聊有关怎么利用python实现windows的批处理及文件夹操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.批量处理所谓的批处理就是批量处理cmd里面的命令。py
2023-06-22

win7查看隐藏的文件怎么操作win7查看隐藏的文件方式介绍

win7查看隐藏的文件怎么操作呢,用户们使用win7的时候用户实际上是有些文件看不见的,这些文件一般是被隐藏亮点,因此如果想要见到隐藏的文件夹,用户必须根据开启显示隐藏文件才能够看获得,下面便是实际的win7查看隐藏的文件方式介绍,这样就可
2023-07-10

数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

墨天轮数据库周刊第28期发布啦,每周1次推送本周数据库相关热门资讯、精选文章、干货文档。本周分享 开发者最喜爱的数据库是什么?阿里云脱口秀爆聊程序员转型;MySQL update误操作后进行数据库恢复;PG流复制踩坑;PG异机归档;MySQL架构选型案例;or
数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……
2014-10-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录