Java IO 深入理解

1、概述

Java 的IO”家族“看起来十分吓人。不仅多而且还有io与nio之分。没用用过的很容易就踩坑。

本文主要从用法上为主,适当源码分析,来更好的掌握Java IO。

节点流和处理流:

  • 节点流:直接与数据源相连,读入或读出。
  • 处理流:与节点流一块使用,在节点流的基础上,再套一层,套在节点流上的就是处理流。本质利用了装饰模式,封装了节点流,利用缓冲技术,使节点流读取速度更快,更利于使用。

为什么要有处理流?直接使用节点流,读写不方便,为了更快的读写文件,才有了处理流。

先按照节点流我们 先大致进行一下归类。

按照节点流、处理流进行归类

按照用途进行归类:

image.png

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,硬骨头也能变软

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,923评论 0 5
  • 第01章 JAVA简介第02章 基础语法第02章 递归补充第03章 面向对象第04章 异常处理第05章 数组第06...
    顺毛阅读 526评论 0 1
  • tags:io categories:总结 date: 2017-03-28 22:49:50 不仅仅在JAVA领...
    行径行阅读 2,220评论 0 3
  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序运行的过程中,可能需要对一些设备进...
    征程_Journey阅读 978评论 0 1
  • Java的IO和NIO 一、Java的IO Java的IO功能在java.io包下,包括输入、输出两种IO流,每种...
    王小冬阅读 1,019评论 0 9