理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,BufferedInputStream 和 BufferedOutputStream, BufferedReader 和 BufferedWriter,转换流

/*
* 1、理解 "流" ?
* 动态性、连续性、方向性。
*
* 2、在java语言中,将数据的输入/输出称之为 IO流。 IO流的分类:
* 1) 从方向分: 输入流 , 输出流。 (参照计算机的内存)
* 将数据送到内存中去称之为输入流。反之,称之为输出流。
*
* 2) 从处理单位来分: 字节流(8位二进制数据), 字符流(16位二进制数据)。
*
* 3) 从是否有数据源来分: 节点流(有数据源), 处理流(必须套在节点流上)。
*
* 3、在Java语言中,所有流类均来自 java.io.* 包。且所有流类均继承自四个抽象的类。
* 1) InputStream 抽象的字节输入流类。
* 2) OutputStream 抽象的字节输出流类。
*
* 3) Reader 抽象的字符输入流类。
* 4) Writer 抽象的字符输出流类。
*
*
* 4、InputStream 抽象的字节输入流类的特性:
* 1) 功能: 它以字节的方式来读取数据。
*
* 2) 提供的抽象方法:
* int read(); 用来读取一个字节,反馈这个字节对应的整数。因此,这个整数的范围为[0, 255];由2^8-1得来
* 当它反馈的是一个 -1 时,表明读取完毕。
*
* void close(); 用来关闭输入流,释放所点资源,确保安全。
*
* int read(byte[] b1); 用来读取多个字节数据并存放到b1数组中,反馈读取的总字节数。
*
* 3) 它针对文件操作的子类有: FileInputStream(文件的字节输入流类)。
*
* 5、FileInputStream类的特性:
* 1) 功能:它用来以字节方式读取指定文件的内容。
* 2) 常用方法:
* int read(); 用来读取一个字节,反馈这个字节对应的整数。因此,这个整数的范围为[0, 255];
* 当它反馈的是一个 -1 时,表明读取完毕。
*
* void close(); 用来关闭输入流,释放所点资源,确保安全。
*
* int read(byte[] b1); 用来读取多个字节数据并存放到b1数组中,反馈读取的总字节数。
*
* 3) 通过案例理解并掌握FileInputStream类的应用(重点)。
*
* 6、OutputStream抽象的字节输出流。
* 1) 功能:它用来以字节方式输出数据。
*
* 2) 它提供的抽象方法:
* void write( int x ); 将给定的整数以字节方式输出。因此,当给定的整数超出了[0, 255]范围
* 时,则输出会失真。
*
* void flush(); 一次性将缓冲区中滞留的数据输出到目的地。即:确保数据输出成功。
*
* void close(); 关闭输出流,释放所点资源,确保安全。
*
* 3) 它针对文件操作的子类有: FileOutputStream文件的字节输出流类。
*
* 7、FileOutputStream文件的字节输出流类,其特性如下:
* 1) 功能:它将给定的数据以字节方式输出到目的地(文件中)。
*
* 2) 常用方法:
* void write( int x ); 将给定的整数以字节方式输出。因此,当给定的整数超出了[0, 255]范围
* 时,则输出会失真。
*
* void flush(); 一次性将缓冲区中滞留的数据输出到目的地。即:确保数据输出成功。
*
* void close(); 关闭输出流,释放所点资源,确保安全。
*
* 3) 通过案例理解并掌握 FileOutputStream文件的字节输出流类(重点)。
* 注意: 存盘时文件不存在没有关系,它会自动创建。但,它所在路径必须存在且正确。
* 注意: 根目录、子目录; 路径: 绝对路径、相对路径。
*
* 8、将FileInputStream 和 FileOutputStream 两个类结合起来实现文件的复制、粘贴。

*9、Reader 抽象的字符输入流类:
* 1) 功能: 它以字符方式来读取内容。
* 2) 抽象方法:
* int read(); 用来读取一个字符,反馈这个字符对应的整数。因此,这个整数的范围为[0, 65535];
* 当它反馈的是一个 -1 时,表明读取完毕。
*
* void close(); 用来关闭输入流,释放所点资源,确保安全。
*
* 3) 它针对文件操作的子类有: FileReader 文件的字符输入流类。
*
* 通过案例理解并掌握 FileReader文件的字符输入流。
*
* 10、Writer 抽象的字符输出流类:
* 1) 功能: 将给定的数据以字符方式输出。
*
* 2) 抽象方法:
* void write( int x ); 将给定的整数以字符方式输出。只要x不超出[0 , 65535]范围就不会失真。
*
* void flush(); 将缓冲区中的数据一次性输出到目的地。
*
* void close(); 关闭字符输出流,释放所占资源,确保安全。
*
* 3) 它针对文件操作的子类有: FileWriter 文件的字符输出流类。
*
* 通过案例理解并掌握 FileWriter类。
*
* 11、FileReader和FileWriter 文件字符输入/输出流结合可实现文件的复制。
* 注意: 它们只能用来复制文本文件。
*
* 12、缓冲流:
* 1) 出现目的: 提高输入/输出效率。
* 2) 缓冲流有两对:
* a) BufferedInputStream 和 BufferedOutputStream (缓冲的字节输入/输出流)
*
* b) BufferedReader 和 BufferedWriter (缓冲的字符输入/输出流)
*
* 3) 缓冲流属于处理流,使用时必须将其套在节点流。
*
* 4) 为了提高文件复制的速度,我们使用缓冲流。(案例)

*13、转换流: InputStreamReader 和 OutputStreamWriter :

* 1) InputStreamReader 字节转换成字符的一个输入流,最后,以字符方式读取数据。
* OutputStreamWriter 字符转换成字节的一个输出流,最后,以字节方式输出数据。

* 2) 功能: 当给的类型数据与要的类型数据不一致时,需要进行转换。
* 另一个功能: 可以为输入/输出指定字符编码集,从而以指定的字符编码集实现数据存盘管理或读取相应字符编码集的文件。

* 3) 案例1: 通过 FileInputStream类的对象去读取带汉字的文件内容并显示在屏幕时会乱码。
* 如何解决这个问题?
* 答案: 通过InputStreamReader转换流来实现。 或者更换FileInputStream为FileReader类实现读取。

* 4) 案例2:通过FileOutputStream类的对象把汉字存盘到文件中时会失真。
* 如何解决这个问题?
* 答案: 通过 OutputStreamWriter转换流来实现。 或者更换为FileWriter类实现存盘。
*/

时间: 2024-10-03 08:55:20

理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,BufferedInputStream 和 BufferedOutputStream, BufferedReader 和 BufferedWriter,转换流的相关文章

Java之IO(一)InputStream和OutputStream

转载请注明源出处:http://www.cnblogs.com/lighten/p/6964702.html 1.前言 计算机的IO操作一直都是比较重要的一环,IO顾名思义,就是输入输出流.不管是磁盘IO还是网络IO,数据流转就离不开IO,理解Java的IO操作类很重要,本文介绍IO的抽象父类InputStream和OutputStream,这是Java的IO操作基础,理解完抽象类,对于其它的IO流也有很大的帮助. 流都实现了Closeable接口,也就是都需要关闭.输出流额外实现了一个Flus

java的文件流:字节流(FileInputStream、FileOutputStream)和字符流(FileReader、FileWriter)。

java的输入输出建立在4个抽象类的基础上:InputStream.OutputStream.Reader.Writer.InputSream和OutputStream被设计成字节流类,而Reader和Writer被设计成字符流类.一般来说,处理字符或者字符串时应该使用字符流类,处理字节或者二进制对象时应该使用字节流类. 一般在操作文件流时,不管是字节流还是字符流,都可以按照以下的方式进行. 1.使用File类找到一个文件 2.通过File类实例化字节流或字符流 3.进行字节(字符)的读写操作

缓冲输入输出流[也叫包装流] BufferedInputStream,BufferedOutputStream,BufferedReader和BufferedWriter

字符缓冲流: 开发时候建议使用缓冲流,速度和效率更快.BufferedReader的api部分: BufferedInputStream 部分api: 可以看出 BufferedInputStream是没有readLine()方法.更多具体,请自行查看api文档 package cn.bean.demo.io.buffer; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReade

J05-Java IO流总结五 《 BufferedInputStream和BufferedOutputStream 》

1. 概念简介 BufferedInputStream和BufferedOutputStream是带缓冲区的字节输入输出处理流.它们本身并不具有IO流的读取与写入功能,只是在别的流(节点流或其他处理流)上加上缓冲功能提高效率,就像是把别的流包装起来一样,因此缓冲流是一种处理流.事实上,这两个处理流(BufferedInputStream和 BufferedOutputStream),加上BufferedReader和BufferedWriter,这四个流在设计时使用到的正是装饰设计模式,通过装饰

02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri

 模拟BufferedInputStream,编写一个类 package toto.IO; import java.io.IOException; import java.io.InputStream; class MyBufferedInputStream{ private InputStream in; private byte[] buf = new byte[1024*4]; private int pos = 0,count = 0; MyBufferedInputStream(I

IO【转换流,打印流,序列化】

编码: 把看的懂,变成看不懂的 String str = "中国"; byte[] bytes = str.getBytes(); System.out.println(Arrays.toString(bytes));解码: 把看不懂的内容,变成能看懂的 String s = new String(bytes); System.out.println(s); java.io.OutputStreamWriter extends Writer OutputStreamWriter:转换流

java io系列07之 FileInputStream和FileOutputStream

本章介绍FileInputStream 和 FileOutputStream 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_07.html FileInputStream 和 FileOutputStream 介绍 FileInputStream 是文件输入流,它继承于InputStream.通常,我们使用FileInputStream从某个文件中获得输入字节.FileOutputStream 是文件输出流,它继承于OutputStream.通

Java学习总结(7)——(File类,IO流,(缓冲流,转换流等),Properties类)

一.File类 java.io.File类代表系统文件(文件和目录) 访问文件属性步骤 (1)创建文件对象 格式:File file=new File(String pathname); (2)调用方法:操作文件目录的属性(路径,权限,日期和时间等) File类的属性(separator默认名称分隔符) (1)在UNIX系统上,此字段的值为 '/ ';在window系统上,它为'\' (2)为了程序的跨平台性,文件的路径应该用这个属性值来代表 File类的常用方法 方法名称 说明 Boolean

IO异常--缓冲流--转换流--序列化流( IO流2 )

1.IO异常的处理 JDK7前处理:使用try...catch...finally 代码块,处理异常部分 // 声明变量 FileWriter fw = null; try { //创建流对象 fw = new FileWriter("fw.txt"); // 写出数据 fw.write("莫逸风"); //莫逸风 } catch (IOException e) { e.printStackTrace(); } finally { try { if (fw != n

IO流(二)——BufferedReader和BufferedWriter

BufferedReader和BufferedWriter 字符流的缓冲区:缓冲区的而出现提高了对数据的读写效率对应类:BufferedWriter  BufferedReader缓冲区要结合流才可以使用,在流的基础上对流的功能进行了增强.实际上BufferedReader和BufferedWriter是对FileReader和FileWriter的装饰模式.BufferedWriter: bufw.newLine(); public class BufferedWriterDemo { pri