Java输入输出流

Java输入输出流
Java输入输出流

FIle类

Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
getParent()用来返回父目录路径;getAbsolutePath()用来返回文件的绝对路径.

字节流

字节输入流

Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流

字节输出流

Java输入输出流
Java输入输出流
Java输入输出流
上图会改变文件的大小,下图不会Java输入输出流

字节缓冲流

Java输入输出流
缓冲区满了自动执行写操作,缓冲区不满强制清空
Java输入输出流
Java输入输出流

字符流

Java输入输出流
Java输入输出流
Java输入输出流
Java输入输出流
输入流:Java输入输出流
Java输入输出流
读写数据的编码:Java输入输出流
Java输入输出流

对象序列化

Java输入输出流
Java输入输出流
Java输入输出流

常见问题总结

1、有什么方法可以判断文件中的对象是否读完并循环输出?

手动在最后写入了一个结束标志 null,oos.writeObject(null);

读出的判定条件是 ois.readObject()!=null

代码示例:
Java输入输出流

使用try-catch 捕捉到EOFException异常,并提示‘已完全读入’即可

代码示例:
Java输入输出流

2、流的关闭顺序

建议在关闭流时,先打开的后关闭,后打开的先关闭。

代码示例:
Java输入输出流

3、关于文件乱码问题

对象输出流写到文件中的本身不是文本数据,是对象序列化后的数据,所以乱码显示是正常的。

在课程中这里是存入的对象序列化后的内容,代码中读取出的内容和写入的内容是一致的,所以这里存入的内容是正确的,如下所示:
Java输入输出流

4、程序为什么要调用flush()方法

java在使用流时,都会有一个小的缓冲,就比如一根管道,输出的时候通过管道存到介质上(硬盘或其他地方),当我们输出完后管道里面可能还有剩余,就用flush()清空管道即全部存到介质上。

代码示例:

Java输入输出流