一.前言

  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相关的东西

1.文件操作(File)

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 I/O框架 (一)总览的更多相关文章

  1. 9个基于Java的搜索引擎框架

    在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...

  2. cache4j轻量级java内存缓存框架,实现FIFO、LRU、TwoQueues缓存模型

    简介 cache4j是一款轻量级java内存缓存框架,实现FIFO.LRU.TwoQueues缓存模型,使用非常方便. cache4j为java开发者提供一种更加轻便的内存缓存方案,杀鸡焉用EhCac ...

  3. Java 线程池框架核心代码分析--转

    原文地址:http://www.codeceo.com/article/java-thread-pool-kernal.html 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和 ...

  4. 5个强大的Java分布式缓存框架推荐

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...

  5. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  6. venus java高并发框架

    http://www.iteye.com/topic/1118484 因为有 netty.mima等远程框架.包括spring jboss等remoting框架 和阿里的dubbo相比, 没有亮点.. ...

  7. Java日志系统框架的设计与实现

    推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...

  8. 浅谈java类集框架和数据结构(1)

    在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...

  9. 详解Java的MyBatis框架中SQL语句映射部分的编写

    这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...

随机推荐

  1. JavaSE基础篇—流程控制语句

    本章知识点分析: 流程控制语句 1.定义:流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块.流程控 制方式采用结构化程序设计中规定的三种基本流程机构:顺序结 ...

  2. IT 人士如何避免中年危机?

    今天咱们不谈技术,来聊点别的. 这也可能是比学习具体技术更重要的话题 - 投资. 我把投资分成两类: 投资股票.期货.现货.黄金这类常见投资品种. 投资自己.比如看书.学习.参加培训.当然<每天 ...

  3. Docker之容器

    容器(Container) 容器介绍: docker是通过容器来运行业务的,就像运行一个kvm虚拟机是一样的.容器其实就是从镜像创建的一个实例. 我们可以对容器进行增删改查,容器之间也是相互隔离的.和 ...

  4. mybatis支持oracle批量插入

    问题:mysql使用mybatis批量插入时,通过foreach标签,将每条记录按照逗号","连接即可. 但是,oracle不支持. oracle支持如下写法: <inser ...

  5. Java中的代码点和代码单元(转)

    文章来源:http://blog.csdn.net/weizhaozhe/article/details/3909079 这篇文章讲的很细,但是对于初学者也很难理解,在后面的笔记中,我会陈述自己的简单 ...

  6. Spring源码情操陶冶-ComponentScanBeanDefinitionParser文件扫描解析器

    承接前文Spring源码情操陶冶-自定义节点的解析,本文讲述spring通过context:component-scan节点干了什么事 ComponentScanBeanDefinitionParse ...

  7. 济南清北学堂游记 Day 2.

    在大佬云集的地方被直线碾压是什么样的体验? 大概就是210和1030的差别. 大概就是高质量机械键盘和空气的区别. 回来的路上,我一直在想,我到底是不是一个高三的? 大概也是能找到以前在家和学校训练时 ...

  8. HDU 3689 Infinite monkey theorem [KMP DP]

    Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...

  9. Missing artifact net.sf.json-lib:json-lib:jar:2.4错误和Eclipse安装Maven插件错误

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.配置Maven项目的pom.xml文件报错 (1).错误描述:Missing artifac ...

  10. 小甲鱼OD学习第2讲

    这次我们的任务是让我们输入任意用户名密码判断正确 我们输入fishc和111111,显示错误 我们猜测这是用GetDlgItemTextW来收集账号密码的输入值 我们找到了两个函数,给这两个函数都下断 ...