流的学习与总结

1.文件对象File:
//绝对路径
File f1 = new File("d:/LOLFolder");
//相对路径,相对于工作目录,如果在eclipse中,就是项目目录
File f2 = new File("LOL.exe");
//把f1作为父目录创建文件对象
File f3 = new File(f1, "LOL.exe");
//在创建一个空文件前,都会创建父目录,无论几级父目录为空
file.getParentFile().mkdirs();
file.createNewFile();
2.文件输入输出流(FileInputStream和FileOutputStream)
将文件转化为字节流,然后将数据以ascall码值的方式读取,返回-1时则读取完毕
注意:关于字节流读取中文的问题,文件的存储编码一般为UTF-8,而在UTF-8编码中,除了中文以外,其他字符跟ASSCLL码值的表述方式相同,而在其中中文通常占2-4个字符,
如果每次控制流读取固定个字节时(比如两个字节)部分中文会出现乱码,
3.在读取字节流(byte流)时,可根据不同的编码格式对其字节流进行解析,但如果需保证两个文件读取过程中不会出现乱码现象,则需控制其读入流和读出流的编码格式
计算机在存储数据过程中都是通过补码存储数据的,比如-32用byte表示为
原码为:11000100->补码为:10111110
其-32的byte强转为int时
原码为:1000..0 01000100->补码为111111..1 10111110
就这个意思,正数byte强转为int会补全前24位为0
4.缓冲流的常见用法:
以介质是硬盘为例,字节流和字符流的弊端:
在每一次读写的时候,都会访问硬盘。 如果读写的频率比较高的时候,其性能表现不佳。
为了解决以上弊端,采用缓存流。
缓存流在读取的时候,会一次性读较多的数据到缓存中,以后每一次的读取,都是在缓存中访问,直到缓存中的数据读取完毕,再到硬盘中读取。
其中读取和写的缓冲流分别有BufferedReader和BufferedWriter
其中flush方法会将数据立即从缓冲区写入硬盘,否则得等缓冲区满才会写入
5.特殊的包装类流:数据流和对象流
数据流DataInputStream和DataOutputStream,其可用于读写特定的数据,比如int,boolean,以及特定格式的字符串
对象流ObjectInputStream和ObjectOutputStream用于读取和写取对象,其对象都必须实现序列化接口

 

posted @ 2020-08-25 16:12  whhhd  阅读(229)  评论(0编辑  收藏  举报