Java中的IO流操作

版权声明:下载请评论““我要下载”,我会把资源发送给你” https://blog.csdn.net/qq_43270074/article/details/83341366

一、定义

流是指一连串流动的字符,是以先进先出的方式发送信息的通道。程序和数据之间是通过流进行关联的。

二、分类

1、按流向分
输出流:OutputStream和Writer作为基类
输入流:InputStream和Reader作为基类
2、按处理数据的单元划分
字节流:nputStream/OutputStream作为基类
字符流:Reader/Writer作为基类

三、流之间的层级关系

上层为基类
1、输入
Reader
InputStreamReader(可设置字符编码) Bufferendreader(带有缓冲区)
InputStream
FileInputStream objecInputStream(反序列化) DateInputStream(读二进制文件)
2、输出
Writer
OuputStreamWriterr(可设置字符编码) BufferendWriterr(带有缓冲区)
InputStream
FileOutputStream objecOutputStream(序列化) DateIOutputStream(读二进制文件)

三、一个重要例子

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class IoDemo1 {
	public static void main(String[] args) {
		InputStream is = null;
		InputStreamReader isr = null;
		BufferedReader br = null;
		OutputStream os = null;
		OutputStreamWriter osw = null;
		BufferedWriter bw = null;
		try {
			// 读
			is = new FileInputStream("t1.txt");
			isr = new InputStreamReader(is, "GBK");
			br = new BufferedReader(isr);
			String info = br.readLine();
			System.out.println(info);
			// 写
			os = new FileOutputStream("t2.txt",true);
			osw = new OutputStreamWriter(os, "GBK");
			bw = new BufferedWriter(osw);
			bw.newLine();
			bw.write(info);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				bw.close();
				osw.close();
				os.close();
				br.close();
				isr.close();
				is.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}
}

特别注意:一定要关闭流,有时候没关闭会出现很多的错误

四、序列化和反序列化

1、使用序列化保存对象信息
即是
objecOutputStream
2、使用反序列化获取对象信息
objecInputStream

猜你喜欢

转载自blog.csdn.net/qq_43270074/article/details/83341366