Apache Commons IO之IOUtils优雅操作流
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Commons IO之IOUtils优雅操作流相关的知识,希望对你有一定的参考价值。
参考技术A 在开发过程中,你肯定遇到过从流中解析数据,或者把数据写入流中,或者输入流转换为输出流,而且最后还要进行流的关闭,原始jdk自带的方法写起来太复杂,还要注意各种异常,如果你为此感到烦恼,那IOUtils可以让我们优雅的操作流。java 读写文件常用方法
package study.bigdata; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Test; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.List; import java.util.Random; import java.util.UUID; /** * <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> </dependencies> */ public class App { /** * 一行一行地读取文件的例子 * * @throws IOException */ @Test public void fileUtilsreadLinesTest() throws IOException { List<String> lines = FileUtils.readLines(new File("D:\\___WORK\\workSpaceHome\\temp\\study3\\toolSet\\src\\main\\java\\resource\\test.dat"), "UTF-8"); System.out.println(lines); } /** * 将String写入文件的方法 * * @throws IOException */ @Test public void fileUtilswriteStringToFile() throws IOException { File file = new File("D:\\test\\toolSet\\fileutils\\output\\out2.dat"); StringBuffer sb = new StringBuffer(); for (int i = 0; i < 3000000; i++) { sb.append(System.currentTimeMillis()).append(" ").append(UUID.randomUUID()).append("\n"); } org.apache.commons.io.FileUtils.writeStringToFile(file, sb.toString(), "UTF-8"); } /** * 生成随机数字和字符串 */ @Test public void randomStringUtilsrandom() { System.out.println(RandomStringUtils.randomAlphabetic(4)); System.out.println(RandomStringUtils.random(5));//产生5位长度的随机字符串,有乱码 //使用指定的字符生成5位长度的随机字符串 System.out.println(RandomStringUtils.random(5, new char[]{‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘})); //生成指定长度的字母和数字的随机组合字符串 System.out.println(RandomStringUtils.randomAlphanumeric(5)); System.out.println(RandomStringUtils.randomAlphabetic(5)); //生成随机数字字符串 System.out.println(RandomStringUtils.randomNumeric(5)); } @Test public void writeFile() throws IOException { File file = new File("D:\\test\\toolSet\\fileutils\\output\\out3.dat"); StringBuffer sb = new StringBuffer(); for (int i = 0; i < 2000; i++) { sb.append(RandomStringUtils.randomAlphabetic(5)).append(" ") .append(RandomStringUtils.randomAlphabetic(5)).append(" ") .append(RandomStringUtils.randomAlphabetic(4)).append(" ") .append(RandomStringUtils.randomAlphabetic(6)).append("\n "); } FileUtils.writeStringToFile(file, sb.toString(), "UTF-8"); } /** * 写一个1g的文件 * @throws IOException */ @Test public void test1g() throws IOException { FileWriter writer = new FileWriter("D:\\test\\toolSet\\fileutils\\output\\out4.dat"); BufferedWriter buffer = new BufferedWriter(writer); StringBuilder sb = new StringBuilder(); for (int j = 0; j < 1024; j++) { sb.append("1"); } long start = System.currentTimeMillis(); int max = 1 * 1024 * 1024;//1G for (int i = 0; i < max; i++) { buffer.write(sb.toString()); } long end = System.currentTimeMillis(); System.out.println(end-start); buffer.flush(); buffer.close(); writer.close(); } }
以上是关于Apache Commons IO之IOUtils优雅操作流的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apache commons-io IOUtils.closeQuietly 安全吗?
commonsIO工具类——commons-io之IOUtils
inputStream输入流转为String对象(将String对象转为inputStream输入流)
Java IO流学习总结八:Commons IO 2.5-IOUtils