java核心内库---IO(2)

xiaoxiao2021-02-28  45

一.拷贝指定目录里的文件到指定目录

实例如下(实质是利用了文件名称过滤器):

二.文件的字符输出流

字节输出流和字符输出流的区别: *      字符输出流可以直接向外写一个字符串.而字节输出流不行 *      字节流需要创建的是byte[]数组,而字符流需要创建的是char[]数组或者直接输出字符串 * ------------------------------------------------           * flush(刷新)操作,输出流中都有flush方法 * 计算机访问外部设备(磁盘文件),要比直接访问内存慢的多,如果每次write都要直接写出到 * 磁盘文件中,CPU都会花更多的时间,此时我们可以存储一个内存缓冲区,程序每次write方法 * 都是直接写到内存缓冲区中,当内存缓冲区满后,系统才把缓冲区内容一次性写出给磁盘文件 *  * ------------------------------------------------ * 使用缓冲区的好处: *         1.提高CPU使用率 *         2.有机会回滚写入的数据 * ------------------------------------------------        * 对于字节流,flush方法不是都有作用(部分字节流才有作用),  对于字符流都有作用 * 系统在调用close()方法关闭资源之前,都会调用flush()方法 *  * ------------------------------------------------ * 操作系统使用-1表示磁盘文件的结尾标记

 * 缓冲区大小一般使用容量整数倍,可以提高IO性能

实例如下:

三.文件的字符输入流

* 为什么要使用字符输入流而不是一直使用字节输入流? *     因为字节流操作汉字或特殊的符号语言的时候容易乱码,建议使用字符流 * 先有字节流,才有字符流 * 在字符流中一个文字,一个符号,一个字母均代表一个字符 * 在字节流中一个汉字最少代表两个字节 *      *  * 使用记事本打开某个文件,可以看到内容的就是文本文件,否则是二进制文件 * 一般的,操作二进制文件(图片,音频,视频等)必须使用字节流 * 一般的,操作文本文件,使用字符流,使用字节流也可以,但是容易出现问题

 * 如果不清楚文件是那一类型的,使用字节流

四.文件字符流的拷贝操作

五.字符解码和编码操作

 字符的编码和解码操作: * 编码: 把字符串转换为byte数组; * 解码: 把byte数组转换为字符串 * 

 * 一定要保证编码和解码的字符集相同,否则会出现乱码

实例如图:

六.包装流和缓冲流的引入和定义

 * 1.处理流/包装流(相对于节点流更高级) * 2.使用处理流包装了节点流,程序直接操作处理流.让节点流与底层的设备做IO操作 * 3.只需关闭处理流即可 *  * 包装流如何区分?   写代码的时候发现创建对象的时候,需要传递另一个流对象 * new 包装流(流对象) *  *  * 什么是缓冲流? *   是一个包装流/处理流,目的是其缓冲作用 *    BufferedInputStream; *    BufferedOutputStream; *    BufferedReader; *    BufferedWriter; *     *     * 缓冲流的目的: *   操作流的时候,习惯定义一个byte/char数组 *   int read():每次从磁盘中读取一个字节.直接操作磁盘文件性能极低 *    *   解决方案:定义一个数组作为缓冲区 *   byte[] buffer=new byte[1024];该数组其实就是一个缓冲区 *   一次性从磁盘文件中读取1024个字节,如此一来,操作文件磁盘的次数就少了,性能得以提升 *   在使用缓冲流的时候一般有两个数组,一个大缓冲区(内存),一个小缓冲区,读取操作,先把文件读到 *   大缓冲区中,再把文件读到小缓冲区中,   大缓冲区一般使用默认缓冲区(内存) *    *   既然我们都能想到,sun公司早都想到了,提供的默认缓冲区大小是8192(1024*8),我们一般

 *   不用修改大小

缓冲流的示意图:

七.字节缓冲流

实例如图:

八.字符缓冲流

实例如图:

九.节点流和缓冲流的性能对比

实例如图:

十.转换流

转换流:把字节流转换为字符流

 *  InputStreamReader:把字节输入流转换为字符输入流  *  OutputStreamWriter:把字节输出流转换为字符输出流  *    * 为什么有字节流转换为字符流而没有字符流转换为字节流?  *   字节流可以操作一切文件(纯文本文件/二进制文件),但是用字节流操作纯文本文件容易出现乱码  *   字符流是用来操作 纯文本文件使用的,   使用的本身是对字节流的加强  *     * 构造方法:  *   public InputStreamReader(InputStream in,Charset cs)创建使用给定字符集的 InputStreamReader。

 *   public OutputStreamWriter(OutputStream out,Charset cs)创建使用给定字符集的 OutputStreamWriter。 

实例如图:

十一.合并流

 SequenceInputStream的两个构造方法: 1).public SequenceInputStream(InputStream s1,InputStream s2)

     通过记住这两个参数来初始化新创建的 SequenceInputStream(将按顺序读取这两个参数,先读取 s1,然后读取 s2)

实例如图:

2). public SequenceInputStream(Enumeration e)

转载请注明原文地址: https://www.6miu.com/read-2622705.html

最新回复(0)