当前位置 : 首页 » 文章分类 :  开发  »  Apache-Commons-IO使用笔记

Apache-Commons-IO使用笔记

Apache-Commons-IO使用笔记

Commons IO 官方站点
https://commons.apache.org/proper/commons-io/


IOUtils

org.apache.commons.io.IOUtils

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html

write()

IOUtils 写 String 到文件

@Test
public void writeFile() throws Exception {
    IOUtils.write(System.getProperties().toString(), new FileOutputStream(new File("/Users/si.ma/out-test.txt")));
}

readLines()

IOUtils 按行读文件并输出

@Test
public void readClasspathFile() throws Exception {
    InputStream inputStream = new FileInputStream(new File("in.txt"));
    IOUtils.readLines(inputStream).forEach(System.out::println);
}

writeLines()

IOUtils 按行读写文件:

@Test
public void readAndwriteFile() throws Exception {
    InputStream inputStream = new FileInputStream(new File("/Users/si.ma/file.txt"));
    OutputStream outputStream = new FileOutputStream(new File("/Users/si.ma/out.txt"));
    IOUtils.writeLines(IOUtils.readLines(inputStream), null, outputStream);
}

readLines 第二个参数是换行符,如果为null则使用系统默认换行符


copy()

copy(inputstream,outputstream)
copy(inputstream,writer)
copy(inputstream,writer,encoding)
copy(reader,outputstream)
copy(reader,writer)
copy(reader,writer,encoding)

copy内部使用的其实还是copyLarge方法。copy能拷贝Integer.MAX_VALUE的字节数据,即2^31-1。

IOUtils拷贝文件实例

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.io.IOUtils;

public class TestFile {
    public static void main(String... args) throws IOException {
        File inputFile = new File("/tmp/data_20190316_1.xlsx");
        File outputFile = new File("/tmp/output.xlsx");
        if (inputFile != null && inputFile.exists() && inputFile.isFile()) {
            InputStream inputStream = new FileInputStream(inputFile);
            OutputStream outputStream = new FileOutputStream(outputFile);
            IOUtils.copy(inputStream, outputStream);
            outputStream.close();
            inputStream.close();
        }
    }
}

copyLarge()

这个方法适合拷贝较大的数据流,比如2G以上。

copyLarge(reader,writer)
copyLarge(reader,writer,buffer)

默认会用1024*4的buffer来读取

Java IO流学习总结八:Commons IO 2.5-IOUtils
https://www.cnblogs.com/zhaoyanjun/p/6401314.html


上一篇 Spring-Cloud-OpenFeign

下一篇 Spring-Cloud-Sleuth

阅读
评论
358
阅读预计2分钟
创建日期 2019-03-19
修改日期 2019-09-24
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论