1、概述
Java 的IO”家族“看起来十分吓人。不仅多而且还有io与nio之分。没用用过的很容易就踩坑。
本文主要从用法上为主,适当源码分析,来更好的掌握Java IO。
节点流和处理流:
- 节点流:直接与数据源相连,读入或读出。
- 处理流:与节点流一块使用,在节点流的基础上,再套一层,套在节点流上的就是处理流。本质利用了装饰模式,封装了节点流,利用缓冲技术,使节点流读取速度更快,更利于使用。
为什么要有处理流?直接使用节点流,读写不方便,为了更快的读写文件,才有了处理流。
先按照节点流我们 先大致进行一下归类。
按照用途进行归类:
2 、浅析
下面逐个对个各类进行击破。
如果我们要了解Java IO还必须了解的一个类File
2.1 File 类
首先File这个类具有歧义性。File本身是文件的意思,但是File类也可以表示目录。
我们先进行简单的File类示范:
创建一个网络流文件。
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
public class FileDemoTest {
/**
* 将百度首页网络流保存为HTML文件
*/
@Test
public void testURI() {
URL url = null;
try {
url = new URL("http://www.baidu.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
File file = new File("F:\\test\\test.html");
try {
FileUtils.copyURLToFile(url, file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、实现原理,源码分析
4、第三方IO工具
Guava :
Apache common-io :
5、优雅使用IO
6、总结
示例源码:
参考文章:
【1】Java IO,硬骨头也能变软