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

Java IO流学习总结八:Commons IO 2.5-IOUtils

IOUtils使用介绍