Java IO流之Commons IO 2.5-FileUtils

目录

一、Commons IO简介

 二、FileUtils 文件操作工具类

1、复制文件夹

3、把字符串写入文件

4、把字节数组写入文件

5、把集合里面的内容写入文件

6、往文件里面写内容

7、文件移动

8、清空和删除文件夹

9、创建文件夹

10、文件获取输入/输出流

11、读取文件

12、测试两个文件的修改时间那个比较新/老

13、其它


一、Commons IO简介

Apache Commons IO是Apache基金会创建并维护的Java函数库。它提供了许多类使得开发者的常见任务变得简单,同时减少重复代码,这些代码可能遍布于每个独立的项目中,你却不得不重复的编写。这些类由经验丰富的开发者维护,对各种问题的边界条件考虑周到,并持续修复相关bug。最新版本2.5

下载地址:http://commons.apache.org/proper/commons-io/download_io.cgi

这里写图片描述

  • Maven引用
<dependency>
  <groupId>org.apache.commons.io</groupId>
  <artifactId>commonsIO</artifactId>
  <version>2.5.0</version>
  <type>pom</type>
</dependency>

 二、FileUtils 文件操作工具类

1、复制文件夹

  • void copyDirectory( file1 , file2 )

复制文件夹(文件夹里面的文件内容也会复制),file1和file2平级。参数1:文件夹; 参数2:文件夹

  • void copyDirectoryToDirectory( file1 , file2 )

复制文件夹到另一个文件夹。 file1是file2的子文件夹。参数1:文件夹; 参数2:文件夹

  • void copyDirectory(File srcDir, File destDir, FileFilter filter)

复制文件夹,带有文件过滤功能

例子:

package com.app;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class A1 {

    public static void main(String[] args) {
        String filePath1 = "F:/dd";
        File file1 = new File(filePath1);

        String filePath2 = "F:/ee";
        File file2 = new File(filePath2);

        try {
            //复制文件夹
            FileUtils.copyDirectory(file1, file2);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、复制文件

  • void copyFile(final File srcFile, final File destFile)

复制文件到另外一个文件

  • void long copyFile(final File input, final OutputStream output)

复制文件到输出流

  • void copyFileToDirectory( file1 , file2)  

复制文件到一个指定的目录

  • void copyInputStreamToFile( InputStream source, File destination)

把输入流里面的内容复制到指定文件

  • void copyURLToFile(final URL source, final File destination)

把URL 里面内容复制到文件。可以下载文件。参数1:URL资源 ; 参数2:目标文件

  • void copyURLToFile(final URL source, final File destination,final int connectionTimeout, final int readTimeout)

把URL 里面内容复制到文件。可以下载文件。参数1:URL资源 ; 参数2:目标文件;参数3:http连接超时时间 ; 参数4:读取超时时间

例子:

package com.app;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import org.apache.commons.io.FileUtils;

public class A8 {

    public static void main(String[] args) {
        String url = "http://imgsrc.baidu.com/baike/pic/item/7aec54e736d12f2ee289bffe4cc2d5628435689b.jpg" ;

        String filePath2 = "F:/abc.jpg" ;
        File file2 = new File( filePath2 ) ;

        try {

            //把服务器上图片下载到本地F盘的abc.jpg图片
            FileUtils.copyURLToFile( new URL( url ) , file2 );

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3、把字符串写入文件

  • void writeStringToFile(final File file, final String data, final String encoding)
  • void writeStringToFile(final File file, final String data, final Charset encoding, final booleanappend)

 参数解释

  1. 参数1:需要写入的文件,如果文件不存在,将自动创建。
  2. 参数2:需要写入的内容
  3. 参数3:编码格式    
  4. 参数4:是否为追加模式( ture: 追加模式,把字符串追加到原内容后面)

例子:

package com.app;

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class A8 {

    public static void main(String[] args) {
        String mes = "下班了" ;

        String filePath2 = "F:/abc.xml" ;
        File file2 = new File( filePath2 ) ;

        try {
            FileUtils.writeStringToFile( file2 , mes , "UTF-8" , true ); 
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4、把字节数组写入文件

  • void writeByteArrayToFile(final File file, final byte[] data)
  • void writeByteArrayToFile(final File file, final byte[] data, final boolean append)
  • void writeByteArrayToFile(final File file, final byte[] data, final int off, final int len)
  • void writeByteArrayToFile(final File file, final byte[] data, final int off, final int len,final boolean append)

 参数解释

  1. File:目标文件
  2. byte[]: 字节数组
  3. boolean append : 是否为追加模式
  4. final int off: 数组开始写入的位置 ; final int len :写入的长度
package com.app;

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class A8 {

    public static void main(String[] args) {
        String mes = "哈哈,下班了" ;

        String filePath2 = "F:/abc.txt" ;
        File file2 = new File( filePath2 ) ;

        try {
            byte[] mesArray = mes.getBytes() ;
            FileUtils.writeByteArrayToFile( file2 , mesArray );
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5、把集合里面的内容写入文件

  • void writeLines(final File file, final Collection<?> lines)
  • void writeLines(final File file, final Collection<?> lines, final boolean append)
  • void writeLines(final File file, final String encoding, final Collection<?> lines)
  • void writeLines(final File file, final String encoding, final Collection<?> lines, final boolean append)                 
  • void writeLines(final File file, final String encoding, final Collection<?> lines, final String lineEnding)
  • void writeLines(final File file, final String encoding, final Collection<?> lines, final String lineEnding, final boolean append)
  • void writeLines(final File file, final Collection<?> lines, final String lineEnding)
  • void writeLines(final File file, final Collection<?> lines, final String lineEnding,final boolean append)

 参数解释

  1. File file: 目标文件
  2. Collection<?> lines: 内容集合
  3. boolean append : 是否为追加模式
  4. String encoding : 编码方式,比如"UTF-8" 
  5. String lineEnding : 每一行以什么结尾

例子:

package com.app;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.commons.io.FileUtils;

public class A8 {

    public static void main(String[] args) {
        
        ArrayList<String> list = new ArrayList<>() ;
        
        String mes = "哈哈,下班了" ;
        String mes2 = "回家,回家" ;
        
        list.add( mes ) ;  //第一行数据
        list.add( mes2 ) ; //第二行数据

        String filePath2 = "F:/abc.txt" ;
        File file2 = new File( filePath2 ) ;

        try {
            FileUtils.writeLines( file2 , list );
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

6、往文件里面写内容

  • void write(final File file, final CharSequence data, final Charset encoding)
  • void write(final File file, final CharSequence data, final String encoding)
  • void write(final File file, final CharSequence data, final Charset encoding, final boolean append)
  • void write(final File file, final CharSequence data, final String encoding, final boolean append)

 参数解释

  1. File file:目标文件
  2. CharSequence data : 要写入的内容
  3. Charset encoding;String encoding : 编码格式
  4.  boolean append:是否为追加模式
package com.app;
import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class A8 {

    public static void main(String[] args) {
            
        String mes = "哈哈,下班了" ;
        
        String filePath2 = "F:/abc.txt" ;
        File file2 = new File( filePath2 ) ;

        try {
            FileUtils.write( file2 , mes , "utf-8" ,true );
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

7、文件移动

  • void moveDirectory(final File srcDir, final File destDir)

文件夹移动,文件夹在内的所有文件都将移动 

  • void moveDirectoryToDirectory(final File src, final File destDir, final boolean createDestDir)

文件夹移动到另外一个文件内部。boolean createDestDir:如果destDir文件夹不存在,是否要创建一个

  • void moveFile(final File srcFile, final File destFile)

移动文件

  • void moveFileToDirectory(final File srcFile, final File destDir, final boolean createDestDir)

把文件移动到另外一个文件内部。boolean createDestDir:如果destDir文件夹不存在,是否要创建一个

  • void moveToDirectory(final File src, final File destDir, final boolean createDestDir)

移动文件或者目录到指定的文件夹内,boolean createDestDir:如果destDir文件夹不存在,是否要创建一个

8、清空和删除文件夹

  • void deleteDirectory(final File directory)

删除一个文件夹,包括文件夹和文件夹里面所有的文件

  • void cleanDirectory(final File directory)

清空一个文件夹里面的所有的内容

  • void forceDelete(final File file)  

删除一个文件,会抛出异常;如果file是文件夹,就删除文件夹及文件夹里面所有的内容。如果file是文件,就删除;如果某个文件/文件夹由于某些原因无法被删除,会抛出异常。

  • boolean deleteQuietly(final File file) 

删除一个文件,没有任何异常抛出;如果file是文件夹,就删除文件夹及文件夹里面所有的内容。如果file是文件,就删除;如果某个文件/文件夹由于某些原因无法被删除,不会抛出任何异常。

9、创建文件夹

  • void forceMkdir(final File directory)

创建一个文件夹,如果由于某些原因导致不能创建,则抛出异常;一次可以创建单级或者多级目录

  • void forceMkdirParent(final File file)

创建文件的父级目录

10、文件获取输入/输出流

  • FileInputStream openInputStream(final File file)

获取输入流

  • FileOutputStream openOutputStream(final File file)

获取输出流

11、读取文件

  • byte[] readFileToByteArray(final File file)

把文件读取到字节数组里面

  • String readFileToString(final File file, final Charset encoding)

把文件读取成字符串 ;Charset encoding:编码格式

  • String readFileToString(final File file, final String encoding)

把文件读取成字符串 ;String encoding:编码格式

  • List<String> readLines(final File file, final Charset encoding)

把文件读取成字符串集合 ;Charset encoding:编码格式

  • List<String> readLines(final File file, final String encoding)

把文件读取成字符串集合 ;String encoding:编码格式

12、测试两个文件的修改时间那个比较新/老

  • boolean isFileNewer(final File file, final File reference) 

判断file文件的修改是否比reference文件新

  • boolean isFileNewer(final File file, final Date date)

判断file文件的修改是否比 date日期新

  • boolean isFileNewer(final File file, final long timeMillis) 

判断file文件的修改是否比 timeMillis 毫秒值新

  • boolean isFileOlder(final File file, final File reference)

判断file文件的修改是否比reference文件老

  • boolean isFileOlder(final File file, final Date date)

判断file文件的修改是否比 date日期老

  • boolean isFileOlder(final File file, final long timeMillis)

判断file文件的修改是否比 timeMillis 毫秒值老

13、其它

  • boolean directoryContains(final File directory, final File child)

判断文件夹内是否包含某个文件或者文件夹

  • long sizeOf(final File file) 

获取文件或者文件夹的大小

  • File getTempDirectory()

获取临时目录文件

  • String getTempDirectoryPath() 

获取临时目录路径

  • File getUserDirectory()

获取用户目录文件

  • static String getUserDirectoryPath()

获取用户目录路径

  • void touch(final File file)

如果不存在,新建文件或者创建单级目录或者多级目录;如果存在,修改文件修改时间     

  • boolean contentEquals(final File file1, final File file2)

比较两个文件内容是否相同

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值