java core 之 IO流
http://www.cnblogs.com/zhangyinhua/p/7307455.html
阅读目录(Content)
- 一、流的概念
- 二、字节流中常用节点流
- 1.1、InputStream
- 1.2、OutputStream
- 1.3、System.out和System.in
- 1.4、ByteArrayInputStream和ByteArrayOutputStream
- 1.5、FileInputStream和FileOutputStream
- 1.6、PipedInputStream和PipedOutputStream
- 1.7、ObjectInputStream和ObjectOutputStream(对象流)
- 三、字节流常用的处理流
- 3.1、BufferedInputStream和BufferedOutputStream
- 3.2、DataInputStream和DataOutputStream
- 3.3、PrintStream
前面我们学习的了多线程,今天开始要学习IO流了,java中IO流的知识非常重要。但是其实并不难,因为他们都有固定的套路。
回到顶部(go to top)
一、流的概念
流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行。设备可以是文件,网络,内存等
流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,如果数据的流向是设备至程序称为输入流。
数据以二进制的形式在程序与设备之间流动传输,就想水在管道里流动一样,所以就把这种数据传输的方式称之为输入流输出流二、流的分类
1)按照流的方向分为输入流和输出流
2)按照处理数据的单位不同分为字节流和字符流
字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2byte = 16bit)
3)按照功能的不同分为节点流和处理流
节点流是可以"直接"从一个数据源中读写数据的流。
处理流也可以称为功能流或者包装流,它是可以对节点流进行封装的一种流,封装后可以增加节点流的功能。
例如:FileInputStream是一个节点流,可以直接从文件读取数据,而BufferedInputStream可以包装 FileInputStream,使得其有缓冲数据的功能。
4)除了以上三种分类外,还有其他的一些类型的:对象流、缓冲流、压缩流、文件流等等,其实这些都是节点流或者处理流的子分类。当然还可以分出来其他的流类型,如果有这样需要的话。
5)不管流的分类是多么的丰富和复杂,其根源来自于四个基本的父类
字节输入流:InputStream
字节输出流:OutputStream
字符输入流:Reader 这四个父类都是抽象类
字符输出流:Writer
回到顶部(go to top)
二、字节流中常用节点流
注:java中常用的io流都在java.io包中
1.1、InputStream
1)方法介绍
public abstract int read();
从输入流中读取数据的下一个字节;如果到达流的末尾则返回 -1
public int read(byte[] b){..}
把读到的字节存到字节数组b中,并返回本次读到了多少个字节
public int read(byte[] b,int off,int len){..}
把读到的字节存到字节数组b中,同时指定开始存的位置以及最大字节数,并返回本次读到了多少个字节
public int available(){..}
返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数
public long skip(long n){..}
跳过此输入流中数据的 n 个字节
public void close(){..}
关闭此输入流并释放与该流关联的所有系统资源
public boolean markSupported(){..}
测试此输入流是否支持 mark 和 reset 方法
public void mark(int readlimit){..}
在此输入流中标记当前的位置
public void reset(){..}
将此流重新定位到最后一次对此输入流调用mark方法时的位置
1.2、OutputStream
1)方法介绍
public abstract void write(int b);
将指定的字节写入此输出流
public void write(byte[] b){..}
将字节数组b中的所有字节写入此输出流
public void write(byte[] b,int off,int len){..}
将字节数组b中的字节写入此输出流,指定开始位置及最大字节数
public void flush(){..}
刷新此输出流并强制写出所有缓冲的输出字节
public void close(){..}
关闭此输出流并释放与此流有关的所有系统资源
注意:InputStream的子类和OutputStream的子类几乎都是成对出现的,一个负责读数据的工作,一个负责写数据的工作
1.3、System.out和System.in
标准输入流会默认从控制台读取数据
标准输出流会默认把数据输出到控制台
System.out.println(System.in.getClass());
System.out.println(System.out.getClass());
输出结果为:
class java.io.BufferedInputStream
class java.io.PrintStream
System类的部分源码:
java core 之 IO流相关推荐
- java中io流实现哪个接口_第55节:Java当中的IO流-时间api(下)-上
标题图 Java当中的IO流(下)-上日期和时间日期类:java.util.Date 系统时间:long time = System.currentTimeMillis();public class ...
- Java中的IO流(六)
上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...
- java中的IO流(超全)(超详解)结合实例轻松掌握
java进阶之IO流 IO流的概念(大纲): 1.InputStream和OutputStream的继承关系图 2.Reader和Writer的继承关系图 3.文件专属流(加※为重点掌握) ※File ...
- 【Java基础】· IO流习题详解
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
- Java当中的IO流(中)
Java当中的IO流(中) 删除目录 import java.io.File;public class Demo{public static void main(String[] args){// 目 ...
- Java当中的IO流-时间api(下)-上
Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...
- Java基础学习—— IO流
Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...
- java io流分为,Java中的IO流按照传输数据不同,可分为和
Java中的IO流按照传输数据不同,可分为和 答:字节流 字符流 克里斯蒂安 · 麦茨指出:想象的能指就是电影的能指,作为象征的科学,在第三视野范围内的解读,它是( ) 答:建立在共同的永久的背景之中 ...
- 重新java系列之IO流
重新java系列之IO流 内容介绍 学习目标 字符输入流 字符输入流[Reader] FileReader类 构造方法 读取字符数据 使用演示: 字符输出流 字符输出流[Writer] FileWri ...
- 猿创征文|Java中的IO流大家族 (两万字详解)
目录 IO流 概述 分类 四大家族 需要掌握的16个流 文件专属 FileInputstream(读 字节) FileInputStream类的其他常用方法 FileOutputStream (写 字 ...
最新文章
- 数通手稿留档——ISIS
- iOS之NSString类中compare方法的陷阱
- java对象的内存结构_JAVA 对象内存结构
- linux更改甜器名称,Linux添加swap分区
- 【Ubuntu-Tensorflow】TF1.0到TF1.2出现“Key LSTM/basic_lstm_cell/bias not found in checkpoin”问题
- MSSQL 2005数据库与SP4补丁安装
- Python学习之==第三方模块的安装、模块导入
- Linux内存管理:MMU那些事儿
- 数组中的对象的特征值提取生成新对象实现方法
- java servlet面试题_servlet面试题一般有哪些?servlet面试大全详解
- 网络设计与系统集成概述
- SAP License:实例讲解SAP与金税接口
- audio2mid:音频提取主旋律
- 卫星导航术语 -- 词汇与概念解释(200条)(转自今日北斗)
- win10出现“以太网没有有效的ip配置”的问题
- Bootstrap网站模板
- 优化工具MOZ功能详细解说
- CPU核心、进程、线程
- 黑客入侵微软邮件服务器部署勒索软件、惠普更新打印机漏洞|12月2日全球网络安全热点
- python中级第九课--模块和包(小白piao分享)