一.概述
1 基本概念
I/O就是Input/Output的简写,也就是输入/输出的含义。
I/O流就是指像流水一样源源不断地进行读写的过程。
 

2 基本分类
 
根据读写数据的单元分为:字节流 和 字符流。
其中字节流就是指以字节为单位进行读写的流,可以读写任意文件。
其中字符流就是指以字符为单位进行读写的流,只能读写文本文件。
 
根据读写数据的方向分为:输入流 和 输出流 (程序的角度)
其中输入流就是指从文件读取数据输入到程序中。
其中输出流就是指将程序中的数据输出到文件中,也就是写文件。
 
 

3. 字节流的顶层父类:InputStream类 和 OutputStream类。

3.1 :InputStream类
 
InputStream类的主要实现类:

DataInputStream类(间接子类)、
 
 

 3.2 OutputStream类
 
OutputStream类的主要实现类:
DataOutputStream类(间接子类)、
PrintStream类 (间接子类)
 
 
 
 
 
 

4. 字符流的顶层父类:Reader类 和 Writer类。

 
4.1 Reader类的主要实现类:
BufferedReader类、
InputStreamReader类、
StringReader类。

 
4.2 Writer类的主要实现类:
BufferedWriter类、
OutputStreamWriter类、
StringWriter类。
 

I / O流 类的更多相关文章

  1. C++文件流类与文件流对象

    文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...

  2. Java输入、输入、IO流 类层次关系梳理

    本文主要关注在Java编程中涉及到的IO相关的类库.方法.以及对各个层次(抽线.接口继承)的流之间的关系进行梳理 相关学习资料 http://baike.baidu.com/view/1007958. ...

  3. C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

    迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...

  4. Java IO 技术之基本流类

    流式IO 流(Stream)是字节的源或目的.         两种基本的流是:输入流(Input Stream)和输出流(Output Stream).可从中读出一系列字节的对象称为输入流.而能向其 ...

  5. javaio学习笔记-字符流类(1)

    1.java.io包中的字符流类-BufferedReader和BufferedWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; In ...

  6. javaio学习笔记-字符流类(2)

    1.java.io包中的字符流类-FileReader和FileWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; FileReader ...

  7. java I/O流类概述

    java I/O流类概述

  8. java代码I/O流类

    package com.aini; //流类rr //流操作的步骤: /*1.找到指定File 2.实例化字节流.InputStream/OutputStream/Reader/Writer 3.读/ ...

  9. java IO输入输出流中的各种字节流,字符流类

    字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...

  10. IO流——File类(文件流类)

    java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...

随机推荐

  1. 如何在终端编译C++代码

    C++语言从编写-->执行整个过程.一般来讲,开发一个C++程序需要经过以下几步1. 编写代码,2. 编译器进行编译,compile    生成.o的可执行的二进制目标文件3. 连接器进行连接. ...

  2. AppServer获取参数的方法

    AppServer中从APP_PARAM表中根据param_code获取param_value: appManageService.getParamValueByCode(param_code) -- ...

  3. Laravel 错误处理

    错误提示:cURL error 60: SSL certificate problem: unable to get local issuer certificate 解决方案:修改文件,重启队列即可 ...

  4. js 设置缓存

    长期存储    localStorage.getItem("key");       //获取键的值    localStorage.setItem("key" ...

  5. 关于自定义 UITableViewCell

    自定义UITableViewCell的方法有很多 发现一些人都会遇到自己定义的cell里面图片错乱的问题 这个问题往往是因为没有实现prepareForReuse这个方法导致的. UITableVie ...

  6. 位操作(求[a, b] 中二进制位为1的个数最多的数)

    传送门 题意:求区间[a, b]中二进制位为1的个数最多的那个数,如果存在多解,则输出最小的那个.(0 <= a <= b) 关键: 对一个数a可以利用 a | (a + 1) 来将a的二 ...

  7. mysql高级教程(二)-----性能分析

    MySQL常见瓶颈 1.cpu SQL中对大量数据进行比较.关联.排序.分组 2.IO a.实例内存满足不了缓存数据或排序等需要,导致产生大量物理 IO. b.查询执行效率低,扫描过多数据行. 3.锁 ...

  8. Django-rest Framework(六)

    不懂使用机制的直接看源码就好了,也不是很难,能够看得懂 视图家族 1. View:将请求方式与视图类的同名方法建立映射,完成请求响应(原生django) from django.views impor ...

  9. jQuery Validate扩展验证方法 (zhangxiaobin)

    /***************************************************************** jQuery Validate扩展验证方法 (zhangxiaob ...

  10. 64位电脑上安装MySQL进行MFC开发的相关问题

    本人环境: 64位win7 + MySQL5.6 安装MySQL的时候有个选项是 选择:32位/64位.默认情况下是安装当前操作系统的位数.但我在使用VS进行开发的时候发现问题: error LNK2 ...