FieUtils类中常用方法的介绍
打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:
cleanDirectory:清空目录,但不删除目录
contentEquals:比较两个文件的内容是否相同
copyDirectory:将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件。
copyFile:将一个文件拷贝到一个新的地址
copyFileToDirectory:将一个文件拷贝到某个目录下
copyInputStreamToFile:将一个输入流中的内容拷贝到某个文件
deleteDirectory:删除目录
deleteQuietly:删除文件
listFiles:列出指定目录下的所有文件
openInputSteam:打开指定文件的输入流
readFileToString:将文件内容作为字符串返回
readLines:将文件内容按行返回到一个字符串数组中
size:返回文件或目录的大小
write:将字符串内容直接写到文件中
writeByteArrayToFile:将字节数组内容写到文件中
writeLines:将容器中的元素的toString方法返回的内容依次写入文件中
writeStringToFile:将字符串内容写到文件中
部分代码:
package com.ming.commonio;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
public class TestCommonIo {
/**
* 使用commonIO包写入文件
*
* @param fileName
*/
public boolean writeFile(String path, String fileName, String content) {
try {
File file = new File(path, fileName);
if (!file.exists()) {
file.createNewFile();
}
FileUtils.writeStringToFile(file, content, "utf-8");
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 使用commonIO包读取入文件
*
* @param path
* @param fileName
* @param content
*/
public String readFile(File file) {
String content = "";
try {
content = FileUtils.readFileToString(file);
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
/**
* 将一个文件拷贝到一个新的地址
*
* @param srcFilePath
* @param destFilePath
* @return
*/
public boolean copyFile(String srcFilePath, String destFilePath) {
File srcFile = new File(srcFilePath);
File destFile = new File(destFilePath);
try {
FileUtils.copyFile(srcFile, destFile, true);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 将一个文件拷贝到某个目录下
*
* @param srcFilePath
* @param destFilePath
* @return
*/
public boolean copyFileToDirectory(String srcFilePath, String destFilePath) {
File srcFile = new File(srcFilePath);
File destDir = new File(destFilePath);
try {
FileUtils.copyFileToDirectory(srcFile, destDir, true);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 将一个输入流中的内容拷贝到某个文件
*
* @param path
* @return
*/
public boolean copyInputStreamToFile(InputStream inputStream, String path) {
File destination = new File(path);
try {
FileUtils.copyInputStreamToFile(inputStream, destination);
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 列出指定目录下的所有文件
*
* @param directory
* @return
*/
public Collection<File> listFiles(String directory) {
File file = new File(directory);
IOFileFilter fileFilter = new IOFileFilter() {
/**
* 测试指定文件是否应该包含在某一文件列表中。
*
* @param dir
* 被找到的文件所在的目录。
* @param name
* 文件的名称。
* @return 当且仅当该名称应该包含在文件列表中时返回 true;否则返回
* false。返回true时,该文件将被允许添加到文件列表中,否则不能添加到文件列表中。
**/
public boolean accept(File dir, String name) {
File file = new File(dir, name);
if (file.isDirectory()) {
return true;
} else {
return false;
}
}
public boolean accept(File file) {
if (file.getName().endsWith(".txt")) {
return true;
} else {
return false;
}
}
};
IOFileFilter dirFilter = new IOFileFilter() {
public boolean accept(File dir, String name) {
File file = new File(dir, name);
if (file.isDirectory()) {
return true;
} else {
return false;
}
}
public boolean accept(File file) {
if (file.isDirectory()) {
return false;
} else {
return true;
}
}
};
return FileUtils.listFiles(file, fileFilter, dirFilter);
}
/**
* 清空目录,但不删除目录
*
* @param path
* @return
*/
public boolean cleanDirectory(String path) {
File file = new File(path);
try {
FileUtils.cleanDirectory(file);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 比较两个文件的内容是否相同
*
* @return
*/
public boolean contentEquals(String filepath1, String filepath2) {
File file1 = new File(filepath1);
File file2 = new File(filepath2);
boolean result = false;
try {
result = FileUtils.contentEquals(file1, file2);
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* 打开指定文件的输入流
*/
public FileInputStream openInputSteam(String fileName) {
File file = new File(fileName);
FileInputStream fileInputStream = null;
try {
fileInputStream = FileUtils.openInputStream(file);
} catch (IOException e) {
e.printStackTrace();
}
return fileInputStream;
}
/**
* 将文件内容按行返回到一个字符串数组中
*
* @param fileName
* @param encoding
* @return
*/
public List<String> readLines(String fileName, String encoding) {
File file = new File(fileName);
try {
return FileUtils.readLines(file, encoding);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public boolean write(String fileName, String data, String encoding, boolean append) {
File file = new File(fileName);
try {
FileUtils.write(file, data, encoding, append);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}