java中的输入输出流概念_java输入输出--I/O流的概念和划分
理解数据流
数据流(Stream)是一组有顺序的,有起点的,有终点的字节集合,是对输入和输出的总称和抽象。
一般地,数据流分为 输入流(InputStream)和输出流(OutputStream)。输入流只能读不能写,而输出流只能写不能读。通常程序使用输入输出流,就好像数据流入程序,或从程序流出。
Java 程序通过流来完成输入输出。 流通过 java 的输入输出系统与物理设备连接,尽管与它们连接的物理设备不尽相同,所有流的行为具有同样的方式。这样,相同的输入输出类和方法适用于所有类型的外部设备。这意味着一个输入流能够抽象多种不同类型的输入:从磁盘文件,从键盘或从网络套接字。同样,一个输出流可以输出到控制台,磁盘文件或相连的网络。流是处理输入输出的一个简便的方法。
把输入流的指向称作为数据源(Data Source),把输出流的指向称作数据接收器(Data Sink),程序从数据源读入数据,向接收器写数据,如下示意图:
java 流的划分
Java2 定义了两种类型的流: 字节流 和 字符流。字节流(Byte Stream)为处理字节的输入和输出提供了方法。例如:使用字节流读取或书写二进制数据。字符流(Character Stream)为 字符的输入和输出提供了方便。它们采用了统一的编码标准,因而可以国际化。 在某些场合,字符流比字节流更有效。
需要说明的是,在最底层,所有的输入输出都是字节形式的。基于字符的流只为处理字符提供方便有效的方法。
字节流类
字节流在顶层由两个抽象类:InputStream 和 OutputStream。每个抽象类都有多个具体的子类,这些子类对不同的外设进行处理,例如磁盘文件,网络连接,甚至是内存缓冲区。
字节输入流 如下图所示,灰色背景的类在使用的时候,需要具体的物理设备,如文件、数组、管道等。白色背景的类(抽象类除外)在使用时,需要其他流的支持。 字节输入流的说明如下:
流描述InputStream表示输入字节流的抽象类FileInputStream文件字节输入流ByteArrayInputStream字节数组输入流,把字节数组作为数据源FilterInputStream过滤字节输入流,提供扩展功能的输入流PipedInputStream管道输入流,可用于线程之间通信ObjectInputStream对象输入流SequenceInputStream顺序输入流,把多个流顺序合并成一个流AudioInputStream音频输入流BufferedInputStream缓冲输入流CipherInputStream加密输入流,在输入过程中,对数据进行加密或解密DataInputStream包含读取 Java 标准数据类型方法的输入流DigestInputStream摘要数据流,在输入过程中,生成流的数组摘要ProgressMonitorInputStream过程监视输入流PushbackInputStream能够向输入流退回一个字节的输入流
字节输出流的说明如下:
流描述OutputStream表示输出字节流的抽象类FileOutputStream文件字节输出流ByteArrayOutputStream字节数组输出流,把字节数组作为数据接收器FilterOutputStream过滤字节输出流,提供扩展功能的输出流PipedOutputStream管道输出流,可用于线程之间通信ObjcetOutputStream对象输出流BufferedOutputStream缓冲输出流CipherOutputStream加密输出流,在输出过程中,对数据进行加密或解密DataOutputStream包含写 Java 标准数据类型方法的输出流DigestOutputStream摘要数据流,在输出过程中,生成流的数字摘要PrintStream打印流,包含 print() 和 println()的输出流
抽象类 InputStream 和 OutputStream 定义了实现其他流类的关键方法。最重要的两种方法时 read() 和 write() ,它们分别用于读写字节。 两种方法都在 InputStream 和 OutputStream 中被定义为抽象方法。它们被派生的流类重写。
字节流中还有一个流:RandomAccessFile ,支持随机地存取文件中的内容。
字符流类
字符流类顶层由两个抽象类:Reader 和Writer。这些抽象类处理统一编码的字符流。java 中有多个具体的子类。
字符输入流的描述
流描述Read表示字符输入流的抽象类BufferedReader带缓冲功能的字符输入流CharArrayReader把字符数组作为输入源的输入流FilterReader过滤字符输入流InputStreamReader字节流向字符流转化流PipedReader管道字符输入流StringReader把字符串作为数据源的输入流LineNumberReader能够统计行数的输入流PushbackReader能够向输入流退回一个字符的输入流FileReader文件字符输入流
字符输出流的描述
流描述Writer描述字符输出流的抽象类BufferedWriter带缓冲功能的字符输出流OutPutStreamWriter字节输出流向字符输出流的转换CharArrayWriter把字符数组作为数据接收器FilterWriter过滤字符输出流PipedWriter管道字符输出流PrintWriter打印字符输出流,类似于PrintStreamStringWriter把字符串作为数据接收器FileWriter文件字符输出流
抽象类 Reader 和 Writer 定义了几个实现其他流类的关键方法。其中两个最重要的是 read() 和 write() ,它们分别进行字符数据的读 和 写。这些方法被派生流类重写。
java中的输入输出流概念_java输入输出--I/O流的概念和划分相关推荐
- Java中的输入输出流
文章目录 1 File类 1.1 File类的常用用法 2 字节流 2.1 字节输入流InputStream 2.1.1 字节输入流整体框架 2.1.2 FileInputStream的常用用法 2. ...
- Java中字节输入输出流
这里的输入和输出是相对于我们的java代码而言的,所谓字节输入流,也就是读取到我们的程序中,字节输出流是写入到我们的文件中 字节输入流 InputStream:这个抽象类是表示输入字节流的所有类的超类 ...
- java的格式输入语句是_java输入输出语句是什么
对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,但是我们可以掌握一些简单的,常用的输入输出方法 输出流 java常用的输出语句有下面三种: S ...
- java中自定义输入数字格式_Java 创建并使用自定义数字格式、35;###、####.#####和语言环境...
import java.util.*; import java.text.*; /* nowjava - 时代Java 提 供 */ public class DecimalFormatDemo { ...
- 在java中如何输入_java如何输入
❶ java 如何从键盘上接受输入 public class import { public static void main(String[] args) { System.out.println( ...
- java中的in的语法_java的输入语法
同学,你好 c语言面向过程 而java面向对象 所以用java做事前肯定要先创建对象啦 java中的输入语句 先创建Scanner对象 Scanner对象 Scanner sc = new Scann ...
- java中System重定向输出流
java中System重定向输出流_javasunboy_新浪博客 java中System重定向输出流 (2011-10-25 18:01:48) 转载▼ 标签: java 日志文件 ...
- Java中如何输入一个字符串
Java中如何输入一个字符串 首先需导入java.util包中的Scanner类,如图: 接着在main里创建Scanner类对象,记得要把System.in加上这是专门获取用户输入的内容的,它会交给 ...
- Java中键盘输入一个数组的具体操作及说明
在java中需要输入一个数组,再对输入的数组进行一些基本操作.这里给出了"(2)键盘输入一个数组:(2)计算数组和:(3)计算数组中的最大值 "的完整代码. import java ...
最新文章
- MySQL常用简单小命令
- android-侧滑菜单
- Java黑皮书课后题第6章:*6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数。编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数
- 如何实现office不同语言界面切换
- 剑指offer:50-53记录
- 安全和隐私:您知道系统中潜藏着什么吗?
- MyBatis缓存结构
- 【新手上路常见问答】关于物联网设计
- 从零开始学习CANoe 系列文章目录汇总
- 钉钉日志范文100篇_钉钉日志,让领导看得见你的工作
- Lecture 005-Duality theory
- Java 解析Tiff深入研究
- 为计算机房的电脑安装防火墙和杀毒软件,杀毒软件和防火墙的关系,哪个重要...
- Hadoop实例学习(八)全排序和区排序
- 【Linux命令】挂盘相关命令,包含可扩展硬盘
- np.savetxt保存时数据不使用科学计数法形式
- Updating...门店零售业数据分析实战
- ADC转换汇总(STM32、取平均、精度等)
- SAP系统实际应用中的十大难题
- activiti表结构 .pig4cloud
热门文章
- 警方试验发现G网手机可使验钞机暂时失灵
- 购物兔入驻百度开放平台,极度方便用户!
- Flash movie not yet registered
- css,一些经常忘掉的简单布局 笔记
- 微软IE10之屌丝体验点评
- 京东自动签到脚本_京东618瓜分10亿,全自动任务脚本,躺着挣钱~
- 某年级三个班的Java考试成绩如下表所示,请采用二维数组保存这些数据(Java实验)
- 任务悬赏平台源码是什么?
- linux查看程序recvfrom,linux udp 客户端recvfrom,一直没有数据接收,谁能帮看看这代码哪里出了问题了????...
- 微信小程序中使用form表单