一个星期快速自学java编程高级语言干货笔记 - 输入和输出(I/O流)处理(字符流)

1.掌握基本的字符流的使用

字符流的顶级基类:

  • Reader
  • Writer

字符输入流

常用实现类: FileReader FileWriter
构造:

  • FileReader(File file);
  • FileReader(String pathname);

常用方法:

  • int read(char[] buffer);读取数据到字符数组中,返回读取的字符数
  • int read(char[] buffer,int offset,int len);读取指定长度的字符数数据到数组中,返回读取的字符

字符输出流
FileWriter
构造:

  • FileWriter(File file);
  • FileWriter(String pathname);
  • FileWriter(String/File pathname,boolean append);追加数据

常用方法:

  • void write(String str);输出一个字符串
  • void write(String str,int offset,int len);输出一个字符串的一部份
  • void write(char[] buffer);输出一个字符数组
  • void write(char[] buffer,int offset,int len);输出一个字符数组的一部份

自动关流: void close(); 在try-catch中可以通过吧try()形式自动关流,这样的话就不用在后面写clise了。

try (
			// 1.指定数据源和输出目的地(实现了AutoCloseable 可以自动关流 JDK1.5)
			FileReader fr = new FileReader("d:/pet.template");
			FileWriter fw = new FileWriter("e:/temp/pet.txt");
			){
			// 2.读取数据
			char[] buffer= new char[1024];
			// 定义字符串缓冲区
			StringBuffer sb = new StringBuffer();
			int len = 0;
			while((len = fr.read(buffer)) != -1) {
				// 追加字符数据
				sb.append(buffer,0,len);
			}
			
			// 3.内容替换
			String before = sb.toString();
			System.out.println("替换前:"+before);
			String after = before.replace("{name}", "苏苏")
								 .replace("{type}", "吃天然牧草长大的莱流")
								 .replace("{master}", "特仑苏");
			System.out.println("替换后:"+after);
			// 4.输出内容
			fw.write(after);
		} catch (Exception e) {
			e.printStackTrace();
		}

2.掌握高效字符流的使用

高效字符输入流

BufferedReader
构造:
BufferedReader(Reader re);
常用方法:
String readLine();读取一行数据
其他同普通字符输入流,但是比之更加高效

高效字符输出流

BufferedWriter
构造:
BufferedWriter(Writer Wr)
常用方法:
方法基本和普通字符输出流一样,但是更加高效。(都是重新重写自Wriyrt类的相关方法)

3.掌握序列化和反序列化的实现(对象流)

序列化: 将对象按照指定的柜子存储到文件中。
反序列化: 将文件中的数据按照指定的规则转换为对象。

序列化

ObjectOutputStream
对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;
在这里插入图片描述

反序列化

ObjectInputStream
从字节流创建对象的相反的过程称为反序列化。而创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化。

public class Demo2 {

	public static void main(String[] args) {
		try (
			// 构造:ObjectInputStream(InputStream is)
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/hotel.txt"));
			){
			// 反序列化
			Object obj = ois.readObject();
			Hotel hotel = (Hotel)obj;
			System.out.println(hotel);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44793608/article/details/89739380