Java从零开始学三十三四(JAVA IO-流简述)
一、流概念(stream)
File类并不能对文件内容进行读写。
读文件就是指:把文件的内中的数据读取到内存中来
写文件就是指:把内存中的数据写入到文件中去。
通过什么读写文件呢?文件流。
1.1、流概念
一连串流动的字符

1.2、流的特性
先进先出的方式传递信息
一个字节序列
具有方向性:输入流、输出流
二、按照流向划分
输入流:读取数据--InputStream和Reader作为基类
输出流:写入数据--OutputStream和Writer作为基类
一共四个4基类。
其中InputStream和outputSream是字节流
其中Reader和Writer是字符流

三、按照处理数据单元划分
字节流:字节输入流、字节输出流
字符流:字符输入流、字符输出流

四、流的基类
其中InputStream和outputSream是字节流:1个字节为传输数据
其中Reader和Writer是字符流:16位Unicode字符为传输数据
4个类都是抽象类不能实例化,需要通4个抽象类提供的方法来实现

五、InputStream体系结构
5.1、字节输入流的基类

FileInputStream:是从文件中读取数据
StringBufferInputStream:把字符串轮换为输入流,这个类已经废弃,取而代之的是StringBufferReader
PipedInputStream:连接一个PipedOutputStream它是管道输入流
ByteArrayInputStream:所字节数组轮换为输入流.
FilerInputStream:是个装饰类,也叫过滤器,它具有扩展其他输入流的功能,它还有实现的子类
5.2、java.io.InputStream包

六、OutputStream体系结构
6.1、字节输出流基类
与上方的InputStream基本相对应

6.2、java.io.OutputStream包

七、Reader流
7.1、体系结构

7.2、常用方法

八、Writer流
8.1、体系结构

8.2、常用方法

九、使用流的步骤
打开流-使用流-关闭流
Java从零开始学三十三四(JAVA IO-流简述)的更多相关文章
- Java从零开始学三十六(JAVA IO- 字符流)
一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的 ...
- Java从零开始学三十三(JAVA IO- File类)
一.简述 在整个io包中,唯一表示与文件本身有关的类就是File类.使用File类可以进行创建或删除文件等常用操作.要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示: ...
- Java从零开始学三十八(JAVA IO- 重定向IO)
一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重 ...
- Java从零开始学三十五(JAVA IO- 字节流)
一.字节流 FileOutputStream是OutputStream 的直接子类 FileInputStream也是InputStream的直接子类 二.文本文件的读写 2.1.字节输入流 Test ...
- Java从零开始学三十九(对象序列化)
一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储. 序列化保存对象的“全景图”,构建对象的“ ...
- Java从零开始学三十七(JAVA IO- 二进制文件读写)
一.简述 二.使用步骤 DataInputStream: 引入相关的类 构造数据输入流的对象(如:FileInputStream,BufferedWriter包装后读取文件等) 读取二进制文件的数据 ...
- Java从零开始学三十二(正则表达式)
一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完 ...
- Java从零开始学三十一(DATE和Calendar类)
一.Date类 Date类是一个相对较为简单的操作类,在使用中直接使用java.util.Date类的构造方法并进行输出就可以得到一个完整的日期 二.Calendar类 Calendar类可以将取得的 ...
- Java从零开始学三十(String和StringBuffer类)
一.StringBuffer连接字符操作 当一个字符串的内容需要被经常改变时就要使用StringBuffer 在StringBuffer中使用append()方法,完成字符串的连接操作 二.Str ...
随机推荐
- 腾讯的网站是如何检测到你的 QQ 已经登录?
在 QQ 已经登录的情况下,手动输入网址打开 QQ 邮箱 或者 QQ 空间 等腾讯网站,可以看到网页已经检测到本地 QQ 客户端已经登录,于是用户可以很方便地一键登录网站而不必再输入用户名密码. 这实 ...
- Maven项目META-INF文件夹不存在的问题
直接在resources文件夹下新建META-INF文件夹即可. 参考: https://my.oschina.net/KingPan/blog/750159 https://stackoverflo ...
- 解决Oracle11g空表无法导出的问题
Oracle11g 新增參数deferred_segment_creation ,建库的时候默认值为true,意思是延时载入,当表中不存在数据的时候,不为这个表创建空间,当你导出的时候会发现非常多表 ...
- 用最简单的例子理解备忘录模式(Memento Pattern)
简单来说,备忘录模式就是支持回退操作.假设让一个Notepad支持回退操作,如何实现呢? 首先需要一个备忘录类. public class Memento { private string _msg; ...
- datagrid在MVC中的运用05-加入时间搜索条件,枚举填充下拉框
本文主要来体验在搜索区域增加更多的搜索条件,主要包括: ※ 使用jQuery ui的datepicker显示时间,设置显示格式.样式. ※ 设置jQuery ui的onClose事件,使开始和结束时间 ...
- Selenium2+python自动化33-文件上传(send_keys)
前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种 ...
- Log4j输出格式控制
参数说明例子 %c 列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介 假设当前logger名字空间是& ...
- ldap客户端以及jenkins的配置
1.http://www.ldapbrowsermac.com/ 分免费版和收费版,使用免费版即可.请使用正确的协议,不然,中文会乱码:支持两种LDAP v3和LDAP v2 2.https://di ...
- 【BZOJ】【2435】【NOI2011】道路修建
DFS/DP 本来以为是一道傻逼题,然而跪了好久……一直RE…… 直接dfs就好了……x->y val=c : ans+=abs(n-size[y]-size[y])*c; 然而为啥会一直R ...
- Objective-C:三种文件导入的方式比较
三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...