I/O流笔记
参考博客:
概念:内存与存储设备之间传输数据的通道
分类:按单位:
字节流:以字节为单位,可以读写所有数据
按功能:
节点流:具有实际传输数据的读写功能
过滤流:在节点流的基础之上增强功能
字节流的父类(抽象类):
InputStream是从硬盘读取到内存(read)
OutputStream是从内存写入到硬盘(write)

字节流
FileInputStream:
public int read(byte[] b)//从流中读取多个字节,将读到的内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1。
FileOutputStream:
public void write(byte[] b)//一次写入多个字节,将b数组中所有字节,写入输出流。
字节缓冲流
BufferedInputStream与BufferedOutputStream
作用:提高IO效率,减少访问磁盘的次数;
数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可直接close。
对象流
ObjectOutputStream/ObjectInputStream
- 
增强了缓冲区功能 
- 
增强了读写8中基本数据类型和字符串的功能 
- 
增强了读写对象的功能 
使用流传输对象的过程称为:序列化、反序列化
字符流

FileReader:
public int read(char[] c)//从流中读取多个字符,将独到的内容存入c数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1
FileWriter:
public void write(String str)//一次写入多个字符,将b数组所有字符,写入输出流。
字符缓冲流
BufferedReader与BufferedWriter
高效读写,支持输入换行符,可一次写一行、读一行
打印流
PrintWriter
转换流
桥转换流:InputStreamReader与OutputStreamWriter
可将字节流转换为字符流
可是之字符的编码方法
File类
概念:代表物理盘中的一个文件或文件夹

FileFilter接口
public intweface FileFilter{ boolean accept(File pathname) }
当调用File类中的listFiles()方法时,支持传入FileFilter接口,接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中
Properties
属性集合
特点:1. 存储属性名和属性值
- 
属性名和属性值都是字符串类型 
- 
没有泛型 
- 
和流有关 
总结

1 byte[] buf = new byte[1024]; 2 int count1 = 0; 3 while((count1=fis.read(buf))!=-1){ 4 System.out.println(new String(buf,0,count1)); 5 } 6 //疑问? 7 // 参考博客:https://blog.csdn.net/zzuwlan_high/article/details/78553193 8  9 /* 10 * 引用API文档:“public int read(byte[] b) throws IOException: 11 * 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。“ 12 * 注意“阻塞”二字,fis执行read时,不会每读一个字节就对count1赋值,所以while循环就被一直堵在判断语句中, 13 * 直到buf被赋满出现异常,读取的阻塞释放,count1终于被赋了一个值1024,接下来就执行循环体的打印。 14 * buf第一次塞满时,文件被读到的地方会有一个记录,所以当循环体执行完后,fis从上次循环结束的记录 15 * 向下读文件,又把while循环阻塞在判断语句,直到读完最后一个字节,读取阻塞再次被释放,这次count1被赋值, 16 * 该值为这次fis读到的字节数。然后,执行循环体打印。然后,fis再次尝试读取文件,这时候已经没有字节可读, 17 * 故返回-1赋给count1,循环体不再执行,循环结束。 18 * */

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号