common-io基本操作(转载)

使用FileUtils简化你的文件操作(commons-io.jar)

2016年07月22日 18:20:49

阅读数:8223

前言:

    在工作当中我们往往遇到很多文件的操作,我们也习惯写一些自己定义的工具类来简化文件操作,其实apache的commons的FileUtils类就是这样一个工具类,使用它能大大的简化我们对文件的操作。

准备工作:

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

    2.把commons-io-2.4.jar 这个文件导入到你的项目中

说明:

    1.由于是一个工具类使用都非常的简单 所以本文只是将其分类,展示它能够提供给我们什么。

    2.习惯看api的可以直接看官方的api   传送门

    3.可以看一看官方的指引  指引传送门

    4.FileUtils只是commons-io的其中一个工具类

分类说明演示:

    1.写 文件/文件夹

Java代码  收藏代码

  1. /* 写文件 
  2.  * 1.这里只列出3种方式全参数形式,api提供部分参数的方法重载 
  3.  * 2.最后一个布尔参数都是是否是追加模式 
  4.  * 3.如果目标文件不存在,FileUtils会自动创建 
  5.  * */  
  6. //static void:write(File file, CharSequence data, String encoding, boolean append)   
  7. FileUtils.write(new File("D:/a/b/cxyapi.txt"), "程序换api","UTF-8",true);  
  8.   
  9. //static void:writeLines(File file, Collection<?> lines, boolean append)   
  10. List<String> lines=new ArrayList<String>();  
  11. lines.add("欢迎访问:");lines.add("www.cxyapi.com");  
  12. FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),lines,true);  
  13.   
  14. //static void:writeStringToFile(File file, String data, String encoding, boolean append)   
  15. FileUtils.writeStringToFile(new File("D:/a/b/cxyapi.txt"), "作者:cxy", "UTF-8",true);  

    2.读 文件/文件夹

Java代码  收藏代码

  1. //读文件  
  2. //static String:readFileToString(File file, String encoding)   
  3. System.out.println(FileUtils.readFileToString(new File("D:/a/b/cxyapi.txt"), "UTF-8"));  
  4.   
  5. //static List<String>:readLines(File file, String encoding)   
  6. System.out.println(FileUtils.readLines(new File("D:/a/b/cxyapi.txt"), "UTF-8")); //返回一个list  

    3.删除 文件/文件夹

Java代码  收藏代码

  1. //删除目录  
  2. //static void:deleteDirectory(File directory)   
  3. FileUtils.deleteDirectory(new File("D:/not/cxyapi"));  
  4.   
  5. //static boolean:deleteQuietly(File file)   
  6. FileUtils.deleteQuietly(new File("D:/not/cxyapi")); //文件夹不是空任然可以被删除,永远不会抛出异常  

    4.移动 文件/文件夹

Java代码  收藏代码

  1. //移动文件 或 文件夹  
  2. //static void:moveDirectory(File srcDir, File destDir)   
  3. FileUtils.moveDirectory(new File("D:/cxyapi1"), new File("D:/cxyapi2")); //注意这里 第二个参数文件不存在会引发异常  
  4. //static void:moveDirectoryToDirectory(File src, File destDir, boolean createDestDir)   
  5. FileUtils.moveDirectoryToDirectory(new File("D:/cxyapi2"), new File("D:/cxyapi3"), true);  
  6. /* 上面两个方法的不同是: 
  7.  * moveDirectory:D:/cxyapi2里的内容是D:/cxyapi1的内容。 
  8.  * moveDirectoryToDirectory:D:/cxyapi2文件夹移动到到D:/cxyapi3里 
  9.  *  
  10.  * 下面的3个都比较简单没提供示例,只提供了api 
  11.  * 其中moveToDirectory和其他的区别是 它能自动识别操作文件还是文件夹 
  12.  */  
  13. //static void:moveFileToDirectory(srcFile, destDir, createDestDir)  
  14. //static void:moveFile(File srcFile, File destFile)   
  15. //static void:moveToDirectory(File src, File destDir, boolean createDestDir)  

    5.copy

Java代码  收藏代码

  1. //结果是cxyapi和cxyapi1在同一目录  
  2. FileUtils.copyDirectory(new File("D:/cxyapi"), new File("D:/cxyapi1"));   
  3. //结果是将cxyapi拷贝到cxyapi2下  
  4. FileUtils.copyDirectoryToDirectory(new File("D:/cxyapi"), new File("D:/cxyapi2"));  
  5.   
  6. //拷贝文件  
  7. FileUtils.copyFile(new File("d:/cxyapi.xml"), new File("d:/cxyapi.xml.bak"));  
  8. //拷贝文件到目录中  
  9. FileUtils.copyFileToDirectory(new File("d:/cxyapi.xml"), new File("d:/cxyapi"));  
  10. //拷贝url到文件  
  11. FileUtils.copyURLToFile(new URL("http://www.cxyapi.com/rss/cxyapi.xml"), new File("d:/cxyapi.xml"));  

    6.其他

Java代码  收藏代码

  1. //判断是否包含文件或者文件夹  
  2. boolean b=FileUtils.directoryContains(new File("D:/cxyapi"), new File("D:/cxyapi/cxyapi.txt"));  
  3. System.out.println(b);  
  4.   
  5. //获得临时目录 和 用户目录  
  6. System.out.println(FileUtils.getTempDirectoryPath());  
  7. System.out.println(FileUtils.getUserDirectoryPath());  
  8.   
  9. //打开流,如果不存在创建文件及其目录结构  
  10. //第二个参数表示 文件流是否是追加方式  
  11. FileOutputStream fos=FileUtils.openOutputStream(new File("D:/cxyapi/cxyapi.txt"),true);  
  12. fos.write(new String("欢迎访问:www.cxyapi.com\r\n").getBytes());  
  13. fos.close();  
  14.   
  15. //文件 或 文件夹大小  
  16. System.out.println(FileUtils.sizeOf(new File("D:/cxyapi")));  
  17. System.out.println(FileUtils.sizeOfDirectory(new File("D:/cxyapi")));  

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Properties;
import java.util.Set;


import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.junit.Test;


public class FileDemo2 {
public static void main(String[] args) {
// 1.File,
// 字符流: FileReader,FileWriter,
// 字节流: InputStream,OutputSream
// 转换流程: InputSreamReader,OutputSreamWriter
// 缓冲流程: BufferedReader,BufferedWriter
// 对象,打印流,标准输入、输出流


// File(File parent, String child)
// File(String pathname) :pathname:文件路径
// File(String parent, String child)
// fileWriter1();


// bufferReaderAndWriter();


// getFileProperties();


try {
// String src = "H://TDDOWNLOAD//book";
// 拷贝目录
// FileUtils.copyDirectory(new File(src), new File("E://cc"));
//
// //获取指定目录下的文件
// File f = FileUtils.getFile(new File(src),"14472.txt");
// System.out.println(f);
//
// //获取临时目录
// String path = FileUtils.getTempDirectoryPath();
// System.out.println(path);
// File path2 = FileUtils.getTempDirectory();
// System.out.println(path2);
//
// //获取当前用户使用目录
// String userPath = FileUtils.getUserDirectoryPath();
// System.out.println(userPath);
//
// //创建一个inputstream字节流
// File filepath = new File(src+"/14472.txt");
// FileInputStream inputStream = FileUtils.openInputStream(new
// File(src+"/14472.txt"));
// System.out.println(inputStream);
//
// //创建一个字节输出流
// FileOutputStream outputStream =
// FileUtils.openOutputStream(filepath);
// System.out.println(outputStream);
//
// //创建一个字节输出流,并判断父目录是否存在,如果不存在,则创建
// File filepath2 = new File("E:/aa/bb/vv/14472.txt");
// FileOutputStream outputStream2 =
// FileUtils.openOutputStream(filepath2,true);
// System.out.println(outputStream2);
//
//
// String size = FileUtils.byteCountToDisplaySize(2);
// System.out.println(size);
//
// //创建一个文件,判断文件是否存在,如果文件存在,则修改文件时间。不存在,则创建一个新文件。
// FileUtils.touch(filepath2);


// 将源目录下的文件及目录拷贝到目标目录下
// FileUtils.copyDirectory(new File("E:/aa"),new File("E:/cc"));


// 将源目录拷贝到目标目录下
// FileUtils.copyDirectoryToDirectory(new File("E:/aa"),new
// File("E:/cc"));


// 将源文件内容拷贝到目标文件中,并且会覆盖目标文件内容
// FileUtils.copyFile(new File("E:/aa/bb/vv/14472.txt"),new
// File("E:/cc/123.txt"));


// 将源文件拷贝到目标目录中,如果目标目录不存在,则创建
// FileUtils.copyFileToDirectory(new File("E:/aa/bb/vv/14472.txt"),
// new File("E:/cc/cc"));


// 向指定文件中写入内容
// FileUtils.write(new File("E:/aa/bb/vv/14472.txt"),
// "sdfsdfsfsdgdfgdf");
// 向指定文件中写入内容,如果为ture,则追加到指定文件中
// FileUtils.write(new File("E:/aa/bb/vv/14472.txt"),
// "111111111111111111", false);


String src = "E:/aa/bb/vv/14472.txt";
// 关闭字符流
// IOUtils.closeQuietly(new FileReader(src));
// IOUtils.closeQuietly(new FileWriter(src));


// 关闭字节流
// IOUtils.closeQuietly(new FileInputStream(new File(src)));
// IOUtils.closeQuietly(new FileOutputStream(new File(src)));


// 创建缓冲流程
// BufferedReader br = IOUtils.buffer(new FileReader(src));
// BufferedWriter bw = IOUtils.buffer(new FileWriter(src));


// 创建一个inputstream字节流
FileInputStream input1 = FileUtils.openInputStream(new File(src));
// FileInputStream input2 = FileUtils.openInputStream(new
// File(src));


// 比较两个字节输入流中的内容是否相同
// boolean flag = IOUtils.contentEquals(input1, input2);
// System.out.println(flag);


FileOutputStream outputStream = FileUtils.openOutputStream(new File("E:/cc/cc/34.txt"));
// 拷贝流,将输入流中的内容拷贝到输出流
// int copy = IOUtils.copy(input1, outputStream);
// System.out.println(copy);


// 拷贝数据到字节输出流
IOUtils.write("222222222222", outputStream);


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


}


private static void getFileProperties() {
try {
FileReader fr = new FileReader("jdbc.properties");
Properties p = new Properties();
p.load(fr);
String driver = p.getProperty("driver");
System.out.println("---->>" + driver);


Set keySet = p.keySet();
for (Object object : keySet) {
System.out.println(object + "------" + p.get(object));
}
} catch (Exception e) {
e.printStackTrace();
}
}


private static void bufferReaderAndWriter() {
BufferedReader buf = null;
BufferedWriter buw = null;
try {
buf = new BufferedReader(new InputStreamReader(new FileInputStream("E:\\aa.txt")));
buw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:\\c.txt")));
String st;
while ((st = buf.readLine()) != null) {
buw.write(st);
buw.newLine();
buw.flush();
}
buf.close();
buw.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (buf != null) {
buf.close();
}
if (buw != null) {
buw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


private static void inOutFile() {
try {
InputStream in = new FileInputStream("E:\\aa.txt");
OutputStream out = new FileOutputStream("E:\\b.txt");
byte[] by = new byte[1024];
int len;
while ((len = in.read(by)) != -1) {
out.write(by, 0, len);
}
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}


@Test
public void bufferReaderAndWriter2() {
try {
BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream("E:\\aa.txt")));
BufferedWriter buw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:\\d.txt")));
IOUtils.copy(buf, buw);
IOUtils.closeQuietly(buf);
IOUtils.closeQuietly(buw);
} catch (Exception e) {
e.printStackTrace();
}
}


@Test
public void inOutFile2() {
try {
BufferedReader buffer = IOUtils.buffer(new FileReader("E:\\aa.txt"));
BufferedWriter buffer2 = IOUtils.buffer(new FileWriter("E:\\b.txt"));
IOUtils.copy(buffer, buffer2);
IOUtils.closeQuietly(buffer);
IOUtils.closeQuietly(buffer2);
} catch (Exception e) {
e.printStackTrace();
}
}


private static void fileWriter1() {


try {
File file = new File("F:\\a.txt");
if (!file.exists()) {
file.createNewFile();
}
// 字符流
FileReader fr = new FileReader(file);
FileWriter fw = new FileWriter(new File("F:\\b.txt"));
System.out.println(fr.getEncoding());
System.out.println(fw.getEncoding());
int len;
char[] ch = new char[1024];
while ((len = fr.read(ch)) != -1) {
fw.write(ch, 0, len);
fw.flush();
}
fr.close();
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

猜你喜欢

转载自blog.csdn.net/qq_20610631/article/details/81100685