java apache fileutil_Apache Commons IO之FileUtils的常用方法

Apache Commons IO

在学习io流的时候研究(翻译)了一下这个,只有FileUtils的某些方法,并不全面,还请谅解

org.apache.commons.io

这个包下定义了基于 streams, readers, writers and files.的实用工具类.

org.apache.commons.io.comparator##

这个包下定义了基于文件的各种比较器的实现

org.apache.commons.io.filefilter

这个包定义了一个接口(IoFielFieldField),融合了FieldField1和FielnaMeField.

org.apache.commons.io.input

这个包提供输入类的实现,如输入流和读取字符流。

org.apache.commons.io.monitor

这个包提供了一个用于监视文件系统事件(目录和文件创建、更新和删除事件)的组件。

org.apache.commons.io.output

这个包提供输出类的实现, 如输出流和写入流

org.apache.commons.io.serialization##

这个包提供了一个用于控制类反序列化的框架。

FileUtils中的常用方法

package com.wzlove.commons;

import org.apache.commons.io.FileUtils;

import org.junit.Test;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.net.URL;

import java.nio.charset.Charset;

import java.util.ArrayList;

import java.util.Collection;

import java.util.Collections;

import java.util.List;

/**

* 测试FileUtiles中的常用方法

*

* @author WZLOVE

* @create 2018-07-21 13:29

*/

public class FileUtilsDemo {

/**

* static voidcleanDirectory(File directory)

* 删除文件夹内的所有内容,但不删除本文件夹

*/

@Test

public void testCleanDirectory() throws IOException {

// 注意的是创建的文件夹的虚拟路径

File dir = new File("F:\\ddd\\aaa");

FileUtils.cleanDirectory(dir);

}

/**

* static boolean contentEquals(File file1, File file2)

* 比较两个文件的内容是否相同,相同返回true,不同返回false(.注意的是两个文件不存在,也会返回true)

*/

@Test

public void testContentEquals() throws IOException {

File file1 = new File("F:\\ddd\\aaa\\a.txt");

File file2 = new File("F:\\ddd\\aaa\\b.txt");

System.out.println(FileUtils.contentEquals(file1,file2));

}

/**

* static File[] convertFileCollectionToFileArray(Collection files)

* 将集合转化为数组

*/

@Test

public void testConvertFileCollectionToFileArray(){

ArrayList fileList = new ArrayList<>();

fileList.add(new File("C:\\aa"));

fileList.add(new File("D:\\aa"));

fileList.add(new File("E:\\aa"));

fileList.add(new File("F:\\aa"));

File[] files = FileUtils.convertFileCollectionToFileArray(fileList);

for (int i = 0; i < files.length; i++) {

System.out.println(files[i].getAbsolutePath());

}

}

/**

* static voidcopyDirectory(File srcDir, File destDir)

* 将srcDir目录下的文件复制到destDir目录下,文件存在则不重复复制

* 还有很多重载的方法,可以传递文件过滤器等等

*/

@Test

public void testCopyDirectory() throws IOException {

File srcDir = new File("F:\\aaa");

File destDir = new File("F:\\bbb");

FileUtils.copyDirectory(srcDir,destDir);

}

/**

* static voidcopyDirectoryToDirectory(File srcDir, File destDir)

* 将srcDir整个文件夹放在destDir的文件夹下

*/

@Test

public void testCopyDirectoryToDirectory() throws IOException {

File srcDir = new File("F:\\aaa");

File destDir = new File("F:\\bbb");

FileUtils.copyDirectoryToDirectory(srcDir,destDir);

}

/**

* static voidcopyFile(File srcFile, File destFile)

* 将srcFile文件复制到destFile中,destFile不存在则会创建目标文件

*/

@Test

public void testCopyFile() throws IOException {

File srcDir = new File("F:\\aaa\\1.txt");

File destDir = new File("F:\\bbb\\a.txt");

FileUtils.copyFile(srcDir,destDir);

}

/**

* static voidcopyFileToDirectory(File srcFile, File destDir)

* 将srcFile文件复制到destDir的目录下

*/

@Test

public void testCopyFileToDirectory() throws IOException {

File srcDir = new File("F:\\aaa\\1.txt");

File destDir = new File("F:\\bbb");

FileUtils.copyFileToDirectory(srcDir,destDir);

}

/**

* static voidcopyToDirectory(File src, File destDir)

* 复制文件或者文件夹到目标文件夹下

*/

@Test

public void testCopyToDirectory() throws IOException {

File srcDir = new File("F:\\aaa");

File destDir = new File("F:\\bbb");

FileUtils.copyToDirectory(srcDir,destDir);

}

/**

* static voidcopyURLToFile(URL source, File destination)

* Copies bytes from the URL source to a file destination.

*/

@Test

public void testCopyURLToFile() throws IOException {

File destination = new File("F:\\bbb\\baidu.txt");

FileUtils.copyURLToFile(new URL("http://ntlias-stu.boxuegu.com/#/index"),destination);

}

/**

* static voiddeleteDirectory(File directory)

* 删除这个文件夹,全部删除,包括这个文件,和cleanDirectory方法做个对比

*/

@Test

public void testDeleteDirectory() throws IOException {

File directory = new File("F:\\bbb\\ccc");

FileUtils.deleteDirectory(directory);

}

/**

* static booleandeleteQuietly(File file)

* 删除这个文件,不会抛出异常

*/

@Test

public void testDeleteQuietly() {

File directory = new File("F:\\bbb\\a.txt");

System.out.println(FileUtils.deleteQuietly(directory));

}

/**

* static voidforceMkdir(File directory)

* 创建文件夹,可以创建多级文件夹

*/

@Test

public void testForceMkdir() throws IOException {

File directory = new File("F:\\bbb\\ccc\\ddd\\aaa");

FileUtils.forceMkdir(directory);

}

/**

* static voidforceMkdirParent(File file)

* 为一个文件创建父路径,但不会创建这个文件(比较奇怪)

*/

@Test

public void testForceMkdirParent() throws IOException {

File directory = new File("F:\\bbb\\aaa\\ccc\\a.txt");

FileUtils.forceMkdirParent(directory);

}

/**

* static String getUserDirectoryPath()

* 返回用户的主目录

*/

@Test

public void testGetUserDirectoryPath(){

String str = FileUtils.getUserDirectoryPath();

System.out.println(str);

}

/**

* static voidmoveDirectory(File srcDir, File destDir)

* 修改文件名,将srcDir.getName()的文件名更改为destDir.getName(),如果文件名存在,报错

*/

@Test

public void testMoveDirectory() throws IOException {

File srcDir = new File("F:\\aaa");

File destDir = new File("F:\\ccc");

FileUtils.moveDirectory(srcDir,destDir);

}

/**

* static voidmoveDirectoryToDirectory(File src, File destDir, boolean createDestDir)

* 将src移动到destDir,后面的boolean表示是不是当destDir文件夹不存在时创建文件夹,false是不创建,true是创建

* 如果src不存在报错,如果src已经存在destDir中,则报错

*/

@Test

public void testMoveDirectoryToDirectory() throws IOException {

File srcDir = new File("F:\\bbb");

File destDir = new File("F:\\eee");

FileUtils.moveDirectoryToDirectory(srcDir,destDir,true);

}

/**

* static voidmoveFile(File srcFile, File destFile)

* 修改文件名

* static voidmoveFileToDirectory(File srcFile, File destDir, boolean createDestDir)

* 移动一个文件到文件夹中,最后的参数为true表示如果destDir不存在的话则创建,为false则不创建

* static voidmoveToDirectory(File src, File destDir, boolean createDestDir)

* 移动文件或者文件夹到目标文件夹,最后的参数为true表示如果destDir不存在的话则创建,为false则不创建

*/

/**

* static FileInputStream openInputStream(File file)

* 返回文件字节输入流

*/

@Test

public void testOpenInputStream() throws IOException {

File file = new File("F:\\bbb\\1.txt");

FileInputStream fis = FileUtils.openInputStream(file);

// 可以进行字节流的读取操作

fis.close();

}

/**

* static FileOutputStream openOutputStream(File file)

* 返回字节输出流,如果文件等多及目录不存在,则创建多级目录,目录存在,清空文件内容

*/

/**

* static FileOutputStreamopenOutputStream(File file, boolean append)

* 返回字节输出流,如果文件等多及目录不存在,则创建多级目录,如果目录存在,则不会清空内容,输出到文件的时候,会追加到原内容的后面

*/

/**

* static byte[]readFileToByteArray(File file)

* 读取文件,返回字节数组

*/

@Test

public void testReadFileToByteArray() throws IOException {

File file = new File("F:\\bbb\\1.txt");

byte[] bytes = FileUtils.readFileToByteArray(file);

System.out.println(new String(bytes));

}

/**

* static StringreadFileToString(File file, String encoding)

* 按照指定编码格式读取文件

*/

@Test

public void testReadFileToString() throws IOException {

File file = new File("F:\\bbb\\1.txt");

String str = FileUtils.readFileToString(file,"UTF-8");

System.out.println(str);

}

/**

* static ListreadLines(File file, String encoding)

* 按照指定编码读取文件,返回String集合,文件的每一行是一个元素

*/

@Test

public void testReadLines() throws IOException {

File file = new File("F:\\bbb\\1.txt");

List list = FileUtils.readLines(file, "UTF-8");

for (String s : list) {

System.out.println(s);

}

}

/**

* static longsizeOf(File file)

* 返回文件或者文件夹的大小

*/

@Test

public void testSizeOf() throws IOException {

File file = new File("F:\\bbb\\1.txt");

long l = FileUtils.sizeOf(file);

System.out.println(l);

File file1 = new File("F:\\bbb");

System.out.println(FileUtils.sizeOf(file1));

}

/**

* static FiletoFile(URL url)

* Convert from a URL to a File.

* 没理解

*/

@Test

public void testToFile() throws IOException {

File file = FileUtils.toFile(new URL("file:\\F:\\bbb"));

System.out.println(file.getAbsolutePath());

}

/**

* static voidwriteByteArrayToFile(File file, byte[] data)

* 向文件中写入字节数组,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入

* static voidwriteByteArrayToFile(File file, byte[] data, boolean append)

* 向文件中写入字节数组,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面

* static voidwriteByteArrayToFile(File file, byte[] data, int off, int len)

* 将byte类型的数组data,从off索引开始,长度为len的内容输出到指定的文件,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入

* static voidwriteByteArrayToFile(File file, byte[] data, int off, int len, boolean append)

* 将byte类型的数组data,从off索引开始,长度为len的内容输出到指定的文件,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面

* static voidwriteStringToFile(File file, String data, String encoding)

* 按照指定的编码格式将String类型的数据写入到文件中,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入

* static voidwriteStringToFile(File file, String data, String encoding, boolean append)

* 按照指定的编码格式将String类型的数据写入到文件中,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面

*/

/**

* static voidwriteLines(File file, Collection> lines)

* 将集合数据写入文件,每条数据占据一行,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入

* static voidwriteLines(File file, Collection> lines, boolean append)

* 将集合数据写入文件,每条数据占据一行,

*/

@Test

public void testWriteLines() throws IOException {

File file = new File("F:\\ddd\\a.txt");

ArrayList coll = new ArrayList<>();

coll.add("I love Java");

coll.add("I love you");

FileUtils.writeLines(file,coll);

}

/**

* static voidwriteLines(File file, Collection> lines, String lineEnding)

* 所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一个lineEnding字符串,如果目标文件不存在,

* 则会创建目标文件,文件存在清空文件内容,再进行输入

* static voidwriteLines(File file, Collection> lines, String lineEnding, boolean append)

* 所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一个lineEnding字符串.如果目标文件不存在,

* 则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面

*/

@Test

public void tesWriteLines2() throws IOException {

File file = new File("F:\\ddd\\a.txt");

ArrayList coll = new ArrayList<>();

coll.add("I love Java");

coll.add("I love Java");

coll.add("I love Java");

FileUtils.writeLines(file,coll,"I love you");

}

/**

* static voidwriteLines(File file, String encoding, Collection> lines)

* 按照encoding编码格式将集合数据写出到文件中,每条数据占据一行,如果目标文件不存在,

* 则会创建目标文件,文件存在清空文件内容,再进行输入

* static voidwriteLines(File file, String encoding, Collection> lines, boolean append)

* 按照encoding编码格式将集合数据写出到文件中,每条数据占据一行,如果目标文件不存在,

* 则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面

*/

@Test

public void tesWriteLines3() throws IOException {

File file = new File("F:\\ddd\\a.txt");

ArrayList coll = new ArrayList<>();

coll.add("I love Java");

coll.add("I love Java");

coll.add("I love Java");

FileUtils.writeLines(file,"UTF-8",coll);

}

/**

* static voidwriteLines(File file, String encoding, Collection> lines, String lineEnding)

* 按照encoding编码格式将集合数据写出到文件中,所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一

* 个lineEnding字符串,如果目标文件不存在, 则会创建目标文件,文件存在清空文件内容,再进行输入

* static voidwriteLines(File file, String encoding, Collection> lines, String lineEnding, boolean append)

* 按照encoding编码格式将集合数据写出到文件中,所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一

* 个lineEnding字符串,如果目标文件不存在, 则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面

*/

@Test

public void tesWriteLines4() throws IOException {

File file = new File("F:\\ddd\\a.txt");

ArrayList coll = new ArrayList<>();

coll.add("I love Java");

coll.add("I love Java");

coll.add("I love Java");

FileUtils.writeLines(file,"UTF-8",coll,"I love you");

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值