java I/O框架 (一)总览
一.前言
java io框架非常庞大,各种功能的类让人目不暇接,为了系统学习io框架,搜集了各种资料,整理出这篇文章,尽可能详细的讲述java io框架,其中会牵扯到许多信息,不仅包括框架内各种类的方法和使用对象,源码的解读(基于jdk1.8.0_60),同时还会从整个框架层次,学习java io框架的设计模式和思想,坑挖的很大,慢慢填.引用的资料也会在后面全部列出;
1.概述
io流操作是java io的核心,io的是input/output的缩写,意思是输入与输出,我们以运行的java程序为主体,input就是数据流向程序内存,output就是指数据从程序内存流出,可以用下图表示

(1)从上图可以看出,io流就是数据从Source流向Destination的一个过程,而数据流的Sources和Destination我们可以概括为以下几种
- 文件访问(file)
- 网络访问
- 内存缓存访问(Buffer)
- 线程内部通信(Pipe管道)
- 缓冲
- 过滤
- 解析
- 读写文本 (Readers / Writers Text)
- 读写基本类型数据 (long, int etc.)
- 读写对象(Object)
(2)当我们从读取或者写入文件时,数据是以字节(byte)或字符(char)的形式流动,依据不同形式读写的流,,java io中设计了四个类
- InputStrem
- Reader
- OutputStream
- Writer
InputStream和OutputStream是字节的输入和输出,Reader和Writer是字符的输入和输出,java io中其他各种各样的类均是由这四种类派生而来
java io框架根据io流针对的对象以及流的形式,设计了不同功能的类,我们可以在下表中查看,这些类也是我们重点学习的对象

2.文章目录
下面我们也根据这个表,来学习java中各种流操作,以及一些和io相关的东西
2.基本流(InputStream,OutputStream,Reader,Writer)
3.文件流(FileInputStream,FileOutputStream,FileReader,FileWriter,RadomAccessFile)
4.转换流(InputStreamReader,OutputStreamWriter)
5.IO异常处理(IOException)
6.缓冲流(BufferedInputStream,BufferedOutputStream,BufferdeReader,BufferedWriter)
7.回退流(PushBackInputStream,PushBackReader)
8.管道流(PipeInputStream,PipeOutputStream,PipeReader,PipeWriter)
3.数组流(ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter)
10.打印流(PrinteStream,PrintWriter)
11.对象流(ObjectInputStream,ObjectOutputStream)
12.字符串流(StringReader,StringWriter)
13.数据流(DataInputStream,DataOutputStream)
14.其他流(StreamTokenizer,LineNumberReader,SequenceInputStream)
15.System.in和System.out 以及System.error
15.序列化(Serializable)
16.Java IO与装饰者模式
17.java NIO
资料
- 《Java IO教程》 -------- 作者:Jakob Jenkov
- Java IO教程 系列 -------- skywang12345
- 从Decorator,Adapter模式看Java/IO库(一) -------- lin_bei
- 关于inputStream.available()方法获取下载文件的总大小 - 无知者无畏 - ITeye技术网站 -------- hold_on
java I/O框架 (一)总览的更多相关文章
- 9个基于Java的搜索引擎框架
在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...
- cache4j轻量级java内存缓存框架,实现FIFO、LRU、TwoQueues缓存模型
简介 cache4j是一款轻量级java内存缓存框架,实现FIFO.LRU.TwoQueues缓存模型,使用非常方便. cache4j为java开发者提供一种更加轻便的内存缓存方案,杀鸡焉用EhCac ...
- Java 线程池框架核心代码分析--转
原文地址:http://www.codeceo.com/article/java-thread-pool-kernal.html 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和 ...
- 5个强大的Java分布式缓存框架推荐
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- venus java高并发框架
http://www.iteye.com/topic/1118484 因为有 netty.mima等远程框架.包括spring jboss等remoting框架 和阿里的dubbo相比, 没有亮点.. ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
- 浅谈java类集框架和数据结构(1)
在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...
- 详解Java的MyBatis框架中SQL语句映射部分的编写
这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...
随机推荐
- 【转】fread函数详解
“fread”以二进制形式,从文件读出数据. 语法1:[a,count]=fread(fid,size,precision) 语法2:[a,count]=fread(fid,size,precisio ...
- 【转】IGS相关
目 前,全球260多个lGS跟踪站中,我国占20多个,分布在武汉.拉萨.乌鲁木齐.昆明.上海等地,全球IGS网的GPS数据,由单台接收机交换 (RINEX)格式生成的日观测和导航数据文件组成,其存储方 ...
- How to get started with GIT and work with GIT Remote Repo
https://www.ntu.edu.sg/home/ehchua/programming/howto/Git_HowTo.html#zz-7. 1. Introduction GIT is a ...
- 全部用startssl生成的证书,配置Apache使其支持SSL
Apache的编译安装见这篇: http://www.cnblogs.com/yjken/p/3921840.html 网上查阅了一大批资料,得知自己生成的证书是会被浏览器提示“证书不安全”的,我也就 ...
- iOS-CoreText的那些事【电子书的那些事】
这段时间在搞电子书,把这些天出现的问题归总下,我还是希望电子书的格式包括返回的数据,可直观的反应出客户端想表达的内容:原生的体验还是比较好的,希望对coretext再深入. 1.判断点击的位置是否在某 ...
- ABP官方文档翻译 5.2 动态We API层
动态Web APID层 创建动态Web API控制器 ForAll方法 重写ForAll ForMethods Http动词 WithVerb方法 HTTP特性 命名约定 API管理器 RemoteS ...
- RandomAccess接口的使用
RandomAccess在类Collections的shuffle()方法中的使用:(jdk源码如下) /** * Randomly permute the specified list using ...
- UOJ 241. 【UR #16】破坏发射台 [矩阵乘法]
UOJ 241. [UR #16]破坏发射台 题意:长度为 n 的环,每个点染色,有 m 种颜色,要求相邻相对不能同色,求方案数.(定义两个点相对为去掉这两个点后环能被分成相同大小的两段) 只想到一个 ...
- BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏 [Nim游戏 SG函数]
小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问你他是否有必胜策略,如 ...
- SDN第二次上机作业
作业链接 安装floodlight 生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 from mininet.topo import Topo class MyT ...