一、前言
本次学习应用于文本处理方面,主要的功能是为了实现删除文本中的空白行
,便于我们阅读和储存。
java.io
包为我们提供了相关的API,实现了对所有外部系统的输入输出操作,这就是我们这章所要学习的技术。
Java为我们提供了多种多样的IO流,我们可以根据不同的功能及性能要求挑选合适的IO流。
二、分析学习
1)数据源
数据源data source,提供数据的原始媒介。常见的数据源有:数据库、文件、其他程序、内存、网络连接、IO设备。如图所示。
数据源分为:源设备、目标设备。
- 源设备:为程序提供数据,一般对应输入流。
- 目标设备:程序数据的目的地,一般对应输出流。
2)数据流
流是一个抽象、动态的概念,是一连串连续动态的数据集合。
对于输入流而言,数据源就像水箱,流(stream)就像水管中流动着的水流,程序就是我们最终的用户。我们通过流(A Stream)将数据源(Source)中的数据(information)输送到程序(Program)中。
对于输出流而言,目标数据源就是目的地(dest),我们通过流(A Stream)将程序(Program)中的数据(information)输送到目的数据源(dest)中。
3)流的概念细分
按流的方向分类:
1. 输入流:数据流向是数据源到程序(以InputStream、Reader结尾的流)。
2. 输出流:数据流向是程序到目的地(以OutPutStream、Writer结尾的流)。
按处理的数据单元分类:
1. 字节流:以字节为单位获取数据,命名上以Stream结尾的流一般是字节流,如FileInputStream、FileOutputStream。
2. 字符流:以字符为单位获取数据,命名上以Reader/Writer结尾的流一般是字符流,如FileReader、FileWriter。
按处理对象不同分类:
1. 节点流:可以直接从数据源或目的地读写数据,如FileInputStream、FileReader、DataInputStream等。
2. 处理流:不直接连接到数据源或目的地,是”处理流的流”。通过对其他流的处理提高程序的性能,如BufferedInputStream、BufferedReader等。处理流也叫包装流。
节点流处于IO操作的第一线,所有操作必须通过它们进行;处理流可以对节点流进行包装,提高性能或提高程序的灵活性。
三、编程学习
1)任务要求
- 完成一个 java application应用程序,实现文本文档的读取和写入,将修改后(删除空白行)的新内容存入到新的文本文档中。
- 应用数据流的相关知识,使用BufferedReader/BufferedWriter处理流:将Reader/Writer对象进行包装,增加缓存功能,提高读写效率。使用InputStreamReader/OutputStreamWriter处理流:将字节流对象转化成字符流对象。
2)程序代码
/* 项目名称:Task_Shao
* 创建时间:2019年1月23日
* 创建者:Administrator
* 创建地点:hb
* 功能:删除空白行(java IO流)
*/
import java.io.*;//导入java.io包中的所有类
import java.util.Scanner;//导入java.util包中的Scanner类
public