Java输入输出流
FIle类
getParent()用来返回父目录路径;getAbsolutePath()用来返回文件的绝对路径.
字节流
字节输入流
字节输出流
上图会改变文件的大小,下图不会
字节缓冲流
缓冲区满了自动执行写操作,缓冲区不满强制清空
字符流
输入流:
读写数据的编码:
对象序列化
常见问题总结
1、有什么方法可以判断文件中的对象是否读完并循环输出?
手动在最后写入了一个结束标志 null,oos.writeObject(null);
读出的判定条件是 ois.readObject()!=null
代码示例:
使用try-catch 捕捉到EOFException异常,并提示‘已完全读入’即可
代码示例:
2、流的关闭顺序
建议在关闭流时,先打开的后关闭,后打开的先关闭。
代码示例:
3、关于文件乱码问题
对象输出流写到文件中的本身不是文本数据,是对象序列化后的数据,所以乱码显示是正常的。
在课程中这里是存入的对象序列化后的内容,代码中读取出的内容和写入的内容是一致的,所以这里存入的内容是正确的,如下所示:
4、程序为什么要调用flush()方法
java在使用流时,都会有一个小的缓冲,就比如一根管道,输出的时候通过管道存到介质上(硬盘或其他地方),当我们输出完后管道里面可能还有剩余,就用flush()清空管道即全部存到介质上。
代码示例: