天天看点

韩顺平io听课笔记

1.文件基础

2.创建文件File类,

new只是写入内存,调用fileName.creatNewFile()真正创建文件;

路径需要\

调用不同构造器实现不同的创建方法,append(Writer,Output)

3.获取文件信息,File类;调用方法get。。。

4.mkdir()一级目录,mkdirs()多级目录;目录也被视为文件

5.io流原理和分类,io体系结构图;字节流,字符流

6.FileInputStream,流创建后,消耗资源,需要关闭finally{FileInputStream.close()};Ctrl+Alt+T,快捷生成try\catch;read()方法返回值不为-1,则继续输入;

文件读取到内存

7.FileOutputStream,创建输出流,目录存在,可以自动创建文件;str.getBytes()自符串转为字节数组;调用不同构造器,可以实现覆盖/追加的效果,append=true;三种写入方式:单个字符,String字符数组,确定位置的字符数组(off偏移量,len长度);

8.文件拷贝,输入流将文件读到程序中,输出流将文件写到指定位置;读取部分就开始写入,循环;写入图片,一定要通过指定长度的方式实现,变量readlen存储指定的长度;字符数组byte[];关闭输入输出流,释放资源

9.文件字符流,FileReader,FileWriter,每次读取单个字符,读入汉字方便;char[];FileWriter覆盖/追加,刷新构造,使用后close,flush,不然写入文件还在内存

10.FileReader,继承InputStreamReader;fileReader.read()单字符读取;

char[] buf字符数组读取new String(buf,0,readLen).sout;

11.FileWriter,五种写入方式(继承自Writer);使用后一定要,close,flush;close=flush+关闭

12.节点流处理流;节点流:从某一个特定的数据源读取数据,如文件,数组,管道,偏底层,效率低;处理流(也叫包装流),BufferedReader源码:可以包装一个Reader的子类(装饰者模式)

韩顺平io听课笔记

13.处理流设计模式;消除不同流之间的实现差异;修饰器设计模式;

性能提高:增加缓冲,提高输入输出效率

操作便捷:一次性输入输出大批量数据

14.BufferedReader;一个read方法,用对象的动态绑定机制,绑定到对象;字符流,处理文本文件;关闭处理流时,只需要关闭外层流即可,底层被包装(类的继承关系)的节点流自动关闭;readLine()

15.BufferedWriter的使用;newLine()插入一个和系统相关的换行;以追加方式写入,true加在节点流上append,处理流没有相应的构造器

16.Buffered拷贝;字符流,不要操作二进制文件,图片,声音,视频,doc,pdf等等

17.Buffered字节处理流InputStream/OutputStream;

韩顺平io听课笔记

18.练习:字节处理流拷贝图片/音乐,可以完成二进制文件拷贝

19.对象处理流,ObjectInputStream,ObjectOutputStream;保存值的同时保存数据类型(序列化),如保存int 100;在恢复数据时,恢复数据的值和数据类型(反序列化);实现Serializable(标记接口,没有方法),或Externalizable的类才可以序列化

20.用ObjectOutputStream序列化一个Dog对象,保存到data.dat文件中(序列化后,保存的文件格式不是纯文本的,而是默认的);包装类Integer实现了Serializable;

21.ObjectInputStream,反序列化;

反序列化顺序要和序列化顺序一致

反序列化时,类需要在ObjectInputStream中定义

要使用反序列化类的方法,需要向下转型,并将类的定义拷贝到可以引用的位置

22.对象处理流的使用细节

韩顺平io听课笔记

private static final long seriaVersionUID = 1L; // 将修改视为版本更新而不是一个新的类,提高兼容性

序列化有可继承性

23.标准输入输出流,System.in/out,键盘/显示器;

编译类型:InputStream(标准输入)/PrintStream(标准输出);

运行类型:BufferedInputStream/PrintStream;

24.转换(作用)流——InputStreamReader和OutputStreamWriter;把一种字节流转换为字符流,解决乱码问题;默认情况下,读取文件按照UTF-8编码;ANSI(国标码)编码,根据系统不同而不同,中国是GBK;

25.InputStreamReader,

构造器InputStreamReader(InputStream,Charset),指定处理的编码方式;

utf-8,gbk,gb2312,ISO8859-1等;

练习:将字节流FileInputStream包装成(转换成)字符流InputStreamReader,对文件进行读取(按照utf-8/gbk格式),进而再包装成BufferedReader

26.OutputStreamWriter;练习:将字节流FileOutputStream包装成(转换成)字符流OutputStreamReader,对文件进行写入(按照utf-8/gbk格式)

27.打印流-PrintStream(字节流)和PrintWriter(字符流);打印流只有输出流,没有输入流;

28.PrintWriter(字符流);根据需求改变打印位置,构造器传不同的Writer;一定要有close方法(flush+关闭流)

29.配置文件引出Properties类;自己读取一个.properties文件中的数据,非常麻烦——>Properties类

30.Properties读文件;.properties配置文件格式要一致 键=值 ;Properties常用方法;Properties练习

31.Properties修改文件;setProperty()文件没有key则创建,有则修改value;

32.练习题三道

33.总结