理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,

本文主要是介绍理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

理解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类实现存盘。
*/

这篇关于理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/234708

相关文章

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危