Java_IO流及IO流在网络编程中的应用

2022-09-02  本文已影响0人  kaikoo

IO流

(抽象基类) 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

字节流:适合操作文件,如图片、声音、视频(按字节一个一个读取)
字符流:适合操作文本(按字符读取)
根据实现类的后缀可以看出属于字节流还是字符流,如FileInputStream和FileReader

常用节点流
操作文件:FileInputStream、FileOutputStream
操作文件中的字符:FileReader、FileWriter(父类分别为InputStreamReader和OutputStreamWriter)
(字符输出流需要使用flush()刷新)

处理流(包装流)
需要传入节点流,在节点流之上提供更强大的功能
操作文件:BufferedInputStream、BufferedOutputStream
操作文件中的字符:BufferedReader、BufferedWriter

转换流
把一种字节流转换为字符流 可以指定编码:
常用:InputStreamReader、OutputStreamReader

存在编码问题时:
// 把字节流FileInputStream转换为字符流InputStreamReader
InputStreamReader isr = new InputStreamReader (new FileInputStream(filePath),"gbk");
// 按需要包装到处理流(包装流)BufferedReader中
BufferedReader br = new BufferedReader (isr);
在网络编程时:
// 把字节流socket.getInputStream()转换为字符流InputStreamReader
InputStreamReader isr = new InputStreamReader (socket.getInputStream());
// 按需要包装到处理流(包装流)BufferedReader中
BufferedReader br = new BufferedReader (isr);

在网络编程中的应用

socket连接:

客户端发送(文本)信息给服务端:

1. 字节流

2. 字符流

客户端从本地读取文件发送给服务端:

最后就是一定要记得关闭资源
字节流使用socket.shutdownOut
字符流记得使用newLine()作为结束标记 以及使用flush()刷新

上一篇下一篇

猜你喜欢

热点阅读