转换流练习
//先把字节流包装成字符流,再把字符流包装成高级字符流public static void main(String[] args) throws IOException {////创建基本流//FileInputStream fis=new FileInputStream("D:\\我的世界\\copy.txt");////把基本流转换成字符流//InputStreamReader fsr=new InputStreamReader(fis);////再把刚才转换的字符流进行包装,变成缓冲流//BufferedReader br=new BufferedReader(fsr);//String str=br.readLine();//System.out.println(str);//上述代码可以写成以下形式BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("D:\\我的世界\\copy.txt")));String str=br.readLine();System.out.println(str);}
序列化流
属于字节流的一种,负责输出数据,与之对应的还有一个反序列化流,用来读取数据
序列化流(对象操作输出流)的解析
作用:可以把Java中的对象写到本地文件中
方法名说明
( out)
把基本流包装成高级流
方法名说明
final void( obj)
把对象序列化(写出)到文件中去
反序列化流(对象操作输入流)的解析
可以把序列化到本地的对象读取到程序中来
方法名说明
( out)
把基本流包装成高级流
方法名说明
()
把序列化到本地的对象读取到程序中来
public static void main(String[] args) throws IOException, ClassNotFoundException {ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:\\我的世界\\one.txt"));Object o = ois.readObject();System.out.println(o);ois.close();}
序列化流和反序列化流的细节练习
规定:以后创建对象写到本地文件中时,要先把对象添加到集合中,再把集合写道本地文件中,读取时可以直接读取集合
//反序列化流public static void main(String[] args) throws IOException {student s1=new student("shangyang",13);student s2=new student("shangya",23);student s3=new student("shangy",43);ArrayList>list=new ArrayList<>();list.add(s1);list.add(s2);list.add(s3);ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("one.txt"));oos.writeObject(list);oos.close();}//序列化流public static void main(String[] args) throws IOException, ClassNotFoundException {ObjectInputStream ois=new ObjectInputStream(new FileInputStream("one.txt"));ArrayList>list = (ArrayList>) ois.readObject();//这里返回值是一个对象,要转成arraylistfor (student student : list) {System.out.println(student);}}
打印流
打印流不能读只能写,所以打印流只有输出流
打印流一般是指和两个类
字节打印流方法名说明
( /File /)
关联字节输出流/文件/文件路径
( , )
指定字符编码
( out, auto )
自动刷新
( out, auto , )
指定字符编码且自动刷新
字节打印流底层没有缓冲区,开不开自动刷新都一样,所以下面两个构造方法意义不大
方法名说明
void write(int b)
常规方法,规则和之前的方法一样
void (Xxx xx)
特有方法:打印任意数据,自动刷新,自动换行
void print(Xxx xx)
特有方法:打印任意数据,不换行
void ( ,… args)
特有方法:带有占位符的打印语句,不换行
字节打印流底层没有缓冲区,开不开自动刷新都一样
public static void main(String[] args) throws IOException, ClassNotFoundException {PrintStream ps=new PrintStream(new FileOutputStream("D:\\我的世界\\a2.txt"),true,"UTF-8");//这两个跟sout的输出是一样的ps.println(97);ps.print(true);ps.println();//这个是占位符的写法//这个占位符有很多,这里就不一一细说了ps.printf("%sone%s","two","three");ps.close();}
- 央视春晚,我眼中的三宗“最” 中国之最节目串词
- 新闻特写拯救“巴斯”:吉尼斯纪录背后的“世界难题” 一 吉尼斯记录心情低落
- 这5种食物是隐藏的“热量炸弹”,小心吃完伤肝脏、毁血管、减寿命 吉尼斯记录热量炸弹
- 全世界“最顶级”的啤酒,却是一群和尚酿的!看完颠覆认知 吉尼斯记录的啤酒
- 视印度女子教育为“新鲜事”的环境下,塞兰坡差会建立的女子学校 吉尼斯记录印度学校
- 十二生肖:成龙的国际影响力能有多大?一部电影让法国归还文物 吉尼斯记录成龙
- 泰勒破纪录共获29座奖杯,身披粉红战袍热辣开唱,逆天长腿太吸睛 泰勒的吉尼斯记录
- 王者荣耀:真相了,排位赛真的段位越高越好打,因为低段位事真多 王者荣耀七大历史之最
- 欧洲杯巡礼之葡萄牙:C罗最后的倔强!卫冕冠军遭法德围剿 葡萄牙欧洲杯历史之最
- 盘点那些不符合发明者想法的发明,你知道几个? 坊子历史之最是谁发明的