1、文件大体可以分为两大类
(1)、字节流:以字节为单位进行读写,一次最少读取一个字节(代表类InputStream输入,OutputStream输出)
(2)、字符流:以字符为单位,比如一个汉字3个字节,每次读写至少是3个字节(以一个汉字为单位不能一次读一半)(代表类Reader输入,writer输出)
2、InputStream,打开文件时,我们有个文件描述符表,记录当时我们都打开了哪些文件,我们打开操作完要记得close,如果不关闭,还一直打开,就会导致文件描述符表被耗尽(我们这里要用finally来写close因为,如果中间逻辑出现return或者抛出异常,close就执行不到了)while循环读取是为了确保文件能读取干净
我们可以简化成(try操作帮我们关闭文件不用在close)
(1)单个字节的读取
(2)一次读若干字节(读的更高效)
(3)指定从哪里读,读多长
3、OutputStream(再写之前会清空前面文件已有的内容,不是write引起的是打开操作引起的) 和上述InputStream一样
(1)为了解决打开文件清空前面内容,我们可以加一个true,之后写操作就变成追加了
(2)一次写一个
(3)一次写多个
(4)从哪里写写多长
4、Reader用法(和InputStream类似)这里我们一个汉字是三个字节,但是我们char是两个字节为什么可以读取字符,因为这个代码,相当于是把当前文件中的utf8再按照字符读取的时候,先转成unicode,每个char里存储对应的unicode值,基于unicode最终还可以构造回utf8的String
5、writer写操作和我们的OutputStream一样也有追加写这个操作需要注意