Java修炼笔记10

本文详细介绍了Java中流的分类,包括输入流、输出流、字节流、字符流、节点流和过滤流。讨论了字节流InputStream和OutputStream的子类及其应用场景,以及与字符流的对应关系。还涵盖了Java中过滤流的作用,对象的序列化和反序列化,File类的功能以及文件的读写操作。
摘要由CSDN通过智能技术生成

Java中流的分类有哪些:

从流动方向上分:输入流、输出流
输入流:向文件写数据。
输出流:从文件中读数据。

从读取类型上分:字节流、字符流
字节流:以字节为基本处理单位。
字符流:以16位的Unicode码表示的字符为基本处理单位。

从发生的源头分:节点流、过滤流
节点流:用于直接操作目标设备对应的流。
过滤流:操作节点流,以更加灵活方便地读写各种类型的数据。

字节流InputStream和OutputStream的子类及各自的使用场景,与其对应的字符流:

文件流 FileInputStream 和 FileOutputStream:
用流的方式对文件进行读写操作。
对应的字符流:FileReader 和 FileWriter

字节数组流 ByteArrayOutputStream 和 ByteArrayInputStream:
字节数组和流之间的桥梁。
对应的字符流:StringReader 和 StringWriter

管道流 PipedInputStream 和 PipedInputStream:
通信管道的接收端和发送端。
对应的字符流:PipedReader 和 PipedWriter

对象流 ObjectOutputStream 和 ObjectInputStream:
能够输入/输出对象的流。
对应的字符流:ObjectReader 和 ObjectWriter

过滤流 FilterInputStream 和 FilterOutputStream:
对其他输入/输出流进行特殊处理,使得他们在读写数据的同时还可以对数据进行特殊处理。
对应的字符流:FilterReader 和 FilterWriter

缓冲流 BufferedInputStream 和 BufferedOutputStream:
带缓冲的过滤流,提供缓冲机制,提高读写效率。
对应的字符流:BufferedReader 和 BufferedWriter

数据流 DataInputStream 和 DataOutputStream:
以统一方式读写boolean、int、long、double等基本数据类型。
无对应字符流

打印流 PrintStream:
输出时自动完成特定功能。
对应的字符流:PrintWriter

字节流与字符流的转化:

输入的字节流有时需要转化为字符流,输出的字符流有时需要转化为字节流,转化过程也叫流的装配过程。。
1)输入字节流转为字符流需要用到 InputStreamReader 的构造方法:

InputStreamReader(InputStream in)

2)输出字符流转为字节流要用到 OutputStreamWriter 或 PrintWriter 的构造方法:

OutputStreamWriter(OutputStream out)
PrintWriter(OutputStream out)

这种转化并没有改变流的内容,只是改变了看“流”的角度。

Java中过滤流(流的装配)的作用:

对其他输入/输出流进行特殊处理,使得他们在读写数据的同时还可以对数据进行特殊处理。此外还提供了同步机制,使得某一时刻只有一个线程可以访问一个输入与输出流。主要是为了提高读写效率。

//将程序中的字符串用流装配的方式输出到屏幕上
import java.io.*;
public class PrintScreen{
   
	public static void main(String[] args) throws Exception {
   
		PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out),true);
		out.println("Hello");

对象的序列化(串行化)和反序列化(持久化):

将内存中的动态对象表达成为可以传输的串形式。对象串行化的目的是为了便于网络传输介质存储。Java提供了Serializable接口,该接口没有任何方法,Java类只有实现Serializable接口才能够被串行化。类 ObjectOutputStream 和 ObjectInputStream 分别实现了接口 ObjectOutput 和 ObjectInput ,将数据流功能扩展到可以读写对象。

public  class Test implements Serializable{
   
	void write(String fname){
   
		FileOutputStream fout = new FileOutputStream(fname)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值