继上个博客:
字节过滤流:
1.缓冲流:
1.1分类:
1.BufferedInputStream
2.BufferedOutoutStream(主要用于BufferedOutoutStream)
1.2FileOutputStream fos = new FileOutputStream("文件名");
BufferedOutoutStream bos = new BufferedOutoutStream(fos);
1.3作用:
1.提高IO效率,减少访问磁盘的次数
2.数据存储在缓存区中,flush是将缓存区的内容写入文件中,也可以直接close
2.对象流
2.1分类:ObjectOutputStream/ObjectInputStream
2.2功能:
1.增强的缓冲区功能
2.增强了读写8种基本数据类型和字符串功能
3.增强了读写对象的功能
4.使用流传输的对象的过程称为序列化、反序列化
再读取对象的过程中,因为不知道最后一个对象是否在哪一个,如果访问到不在的对象会报错,所以采用try{}catch{}解决
while(true){
try {
Object obj = ois.readObject();
System.out.println(obj);
} catch (Exception e) {
break;//当遇到查询不到对象报
异常时捕获结束循环
}
}
对象序列化:
必须实现Serializable接口
必须保证其所有属性均可序列化(所有属性实现Serializable接口)
transient修饰为临时属性,不参与序列化
读取到文件尾部的标志:java.io.EOFException
字符过滤流:
缓冲流:
BufferedWriter/BufferedReader
支持换行符:newLine()不足:每次换行都要书写一遍,代码冗余
每读一次读一行:readLine();
PrintWriter:
封装了print()/println()方法,支持写入后换行
字符节点流:
桥转换流:
InputStreamReader/OutputStreamWriter
//1.字节输出流
OutputStream os = new FileOutputStream("Files\\convert.txt");//字节输出流
//编码 2.转换为字符输出流
OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");//指定输出的数据 编码格式
//3.包装字符过滤流
PrintWriter pw = new PrintWriter(osw);
//4.关闭流
//1.字节输入流
InputStream is = new FileInputStream("Files\\convert.txt");
//解码 2.转换为字符输入流
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
//3.包装字符过滤流
BufferedReader br = new BufferedReader(isr);
//4.关闭流
读入方式
while(true) {
String s = br.readLine();
if(s == null) {
break;
}
System.out.println(s);
}
br.close();