趣文网 > 作文大全

一起学JAVA——数据流

2020-12-02 04:20:01
相关推荐

在我们的现实世界里,任何事物的移动都会行程“流”。如:水流、车流、人流、泥石流等。同样道理,程序中的数据从一个地方移动到另一个地方也会行程“流”,那就是数据流。如:上传文件时,文件数据要流动到网络上;下载文件时数据要从网络流动到本地;播放视频时,数据要从硬盘上流量到内存等等。

在java中数据流也是有一组类来表示的,今天的主要内容就是流对象的用法。

什么是流

流是一个抽象的概念。 和电流、水流一样,只不过这里是数据流。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。

流的分类

按流动方向分为:输入流和输出流

按最小单位分为:字节流和字符流

按功能分为:文件流、缓冲流、内存流、网络流、数据流、对象流等。

字节流处理概述

对于字节流处理的类都继承自InputStream和OutputStream这两个抽象类。

InputStream提供的最重要的方法是:

OutputStream提供的最重要的方法是:

字节输入流:

先谈谈输入流,输入流中跟数据源直接接触的类有:FileInputStream和ByteArrayInputStream,他们分别实现了从文件或者内存中的字节数组读入数据到输入流。

其他的输入流处理类都是装饰类(Decorator模式),如:

BufferedInputStream: 提供了缓冲功能。

DataInputStream: 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。

字节输出流:

基本上每个输入流类都有一个相应的输出流类,提供相应的输出流处理。

同样,跟数据目的地直接接触的类有:FileOutputStream和ByteArrayOutputStream,前者实现了把数据流写入文件的功能,后者实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString() 获取数据。

其它的装饰类,如下:

BufferedOutputStream: 提供了缓冲功能的输出流,在写出完成之前要调用flush来保证数据的输出。

DataOutputStream: 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。

字符流处理概述

所有的字符流操作类都继承自Reader或者Writer这两个抽象类。

Reader提供的重要方法有:

Writer提供的重要方法有:

字符输入流:

跟数据源直接接触的类:

CharArrayReader: 从内存中的字符数组中读入数据,以对数据进行流式读取。

StringReader:从内存中的字符串读入数据,以对数据进行流式读取。

FileReader:从文件中读入数据。注意这里读入数据时会根据JVM的默认编码对数据进行内转换,而不能指定使用的编码。所以当文件使用的编码不是JVM默认编码时,不要使用这种方式。

其他字符输入装饰类:

BufferedReader:提供缓冲功能,可以读取行:readLine();

LineNumberReader: 提供读取行的控制:getLineNumber()等方法。

InputStreamReader: 字节流通向字符流的桥梁:它使用指定的 charset

读取字节并将其解码为字符。

字符输出流:

根数据目的相关的类:

CharArrayWriter:把内存中的字符数组写入输出流,输出流的缓冲区会自动增加大小。输出流的数据可以通过一些方法重新获取。

StringWriter: 一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。

FileWriter:把数据写入文件。

其他字符输出装饰类:

BufferedWriter:提供缓冲功能。

OutputStreamWriter:字符流通向字节流的桥梁:可使用指定的 charset

将要写入流中的字符编码成字节。

PrintWriter: 向文本输出流打印对象的格式化表示形式。

flush:Writer或者OutputStream中的flush(): 刷新该流的缓冲,用于确保数据的输出。

close(): 关闭流并释放与之关联的所有系统资源。

注意:字符最终也是已字节的形式存储在计算机里的,所以字符流只能读取字符文件(文本文件),但字节流既能读字符文件也能读字节文件(二进制文件)。

流基本应用小结

流是用来处理数据的。 处理数据时,一定要先明确数据源,或者数据目的地 数据源可以是文件,可以是键盘或者其他设备。 数据目的地可以是文件、显示器或者其他设备。 而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理、转换处理等。

Java从入门到精通 java语言程序设计编程思想核心技术¥39.8淘宝月销2购买

精品推荐:

一起学JAVA——常用类

一起学JAVA——异常处理

一起学JAVA——面对对象(其他)

编程技术笔记——Nginx反向代理和负载均衡

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

写人生的作文 独处作文 磨砺作文 烤鸭作文 星火作文 作文梦想400字 值日作文 禁毒的作文 批改英语作文 身边人的作文 千字作文 旅行记作文 奋斗作文结尾 秋天英语作文 考研英语模板作文 我喜欢的动物的作文 友谊的英语作文 学会作文800字 作文赶集 描写心情的作文 最好的自己作文 写水的作文 机器人英语作文 漫画老师的作文 传承文化的作文 家的幸福作文 人的作文300字 家乡作文200字 作文猜猜他是谁 努力奋斗作文