输入输出(I/O)流。

为了记录所学的知识,就简单的进行描述,后续再补充。

什么是字节流呢?
字节流是基于二进制的万能流,对于任何类型的文件通过字节流都可以对其进行读写。字节流使用了装饰设计模式。

字节流输入流(InputStream)结构图:

字节输出流(OutputStream)结构图:

什么是字符流:

字符流只能够读取文本文件,不能够读取流媒体文件,但理论上读取的效率高于字节流的效率

字符输入流结构图:

字符输出流结构图:

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in = new BufferedReader(neInputStreamReader(System.in));

OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给 write() 方法的字符没有缓冲。

为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如:
 Writer out = new BufferedWriter(new OutputStreamWriter(System.out));

时间: 2024-10-07 07:52:03

输入输出(I/O)流。的相关文章

C/C++中关于输入输出缓冲区和流的概念理解

(本文章关于缓冲区概念的理解部分取自:http://developer.51cto.com/art/201107/277186.htm) 首先可以看下快递的寄送过程: 源地址(商家的仓库)——中转地(快递公司的仓库)——目的地(买家) 我们从淘宝商家买衣服,商家通过快递公司把商品送到我们手里的这个过程可以形象的解释下缓存区和流的这个概念. 1, 淘宝商家不会亲自把商品给买家送过来的,因为这样效率太低了,商家会通过快递公司这个中转,然后快递公司再把东西送给买家.淘宝商家就是在键盘上打字,买家就是程

Java知多少(66)输入输出(IO)和流的概述

输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作.几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等.通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界.Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计更为简单. Java流的概念 流(Stream)是指在计算机的输入输出操作中各部件之间的数据流动.按照数据的传输方向,流可分为输入流与输出流.Java语言里的流序列中的数据既可以是未经加工的原始二进制

C++文件流

文件流:以文件为输入输出对象的流 #include<fstream> 一.文件操作打开一个输入或输出文件 1.打开一个输出文件 ofstream fout; fout.open("1.txt"); 2.打开一个输入文件 ifstream  fin; fin.open("2.txt"); 3.打开一个文件,既可以输入也可以输出 fstream finout: finout.open("3.txt"): 更便捷方式   ofstream

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

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

C++学习50 对字符串流的读写

文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据读入.字符串流也称为内存流. 字符串流也有相应的缓冲区,开始时流缓冲区是空的.如果向字符数组存入数据,随着向流插入数据,流缓冲区中的数据不断增加,待缓冲区满了(或遇换行符),一起存入字符数组.如果是从字符数组读数据,先将字符数组中的数据送到流缓冲区,然后从缓冲区中提取数据赋给有关变量. 在字符数组中

流类库

第10章 输入/输出流 I/O(输入/输出)流类库提供对象之间的数据交互服务. 流类库预定义了一批流对象,连接常用的外部设备. 程序员可以定义所需的I/O流对象,使用流类库提供的工作方式实现数据传输. 10.1 流类和流对象 10.2 标志流和流对象 10.3 格式控制 10.4 串流 10.5 文件处理 小结 10.1 流类和流对象 程序中,对数据的输入/输出是以字节流实现的. 应用程序对字节序列作出各种数据解释. I/O系统的任务就是在内存和外部设备之间稳定可靠地传输数据和解释数据. 流类对

C++的那些事:流与IO类

1.流的概念 "流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流.C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存)输入和从内存向外部输出设备(如显示器和磁盘)输出的过程,这种输入输出过程被形象地比喻为"流". 为了实现信息的内外流动,C++系统定义了I/O类库,其中的每一个类都称作相应的流或流类,用以完成某一方面的功能.根据一个流类定义的对象也时常被称为流. 通常标准输入或标准输出设备显示器称为标准流

计算机程序的思维逻辑 (58) - 文本文件和字符流

上节我们介绍了如何以字节流的方式处理文件,我们提到,对于文本文件,字节流没有编码的概念,不能按行处理,使用不太方便,更适合的是使用字符流,本节就来介绍字符流. 我们首先简要介绍下文本文件的基本概念.与二进制文件的区别.编码.以及字符流和字节流的区别,然后我们介绍Java中的主要字符流,它们有: Reader/Writer:字符流的基类,它们是抽象类. InputStreamReader/OutputStreamWriter:适配器类,输入是InputStream,输出是OutputStream,

流(stream)

流的概念 Java程序通过流来完成输入/输出.流是生产或消费信息的抽象.流通过Java的输入/输出系统与物理设备链接.尽管与它们链接的物理设备不尽相同,所有流的行为具有同样的方式.这样,相同的输入/输出类和方法适用于所有类型的外部设备.这意味着一个输入流能够抽象多种不同类型的输入:从磁盘文件,从键盘或从网络套接字.同样,一个输出流可以输出到控制台,磁盘文件或相连的网络.流是处理输入/输出的一个洁净的方法,例如它不需要代码理解键盘和网络的不同.Java中流的实现是在java.io包定义的类层次结构