首页 > 编程语言 > 详细

Java I/O流 03

时间:2020-04-16 13:59:22      阅读:73      评论:0      收藏:0      [点我收藏+]

I/O流·字符流

字符流FileReader

* A:字符流是什么
  * 字符流是可以直接读写字符的 IO流
  * 字符流读取字符,就要先读取到字节数据,然后转换为字符;如果要写出字符,需要把字符转换为字节再写出

* B:FileReader
  * FileReader类的read() 方法可以按照字符大小读取

技术分享图片

技术分享图片
package com.heima.chario;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Demo1_FileReader {

    public static void main(String[] args) throws IOException {
        // demo1();
        // demo2();
    }

    public static void demo2() throws FileNotFoundException, IOException {
        FileReader fr = new FileReader("xxx.txt");
        int c; // 默认返回的是int类型
        
        while ((c = fr.read()) != -1) {    // 通过项目默认的码表,一次读取一个字符
            System.out.println((char) c); // 强转为char类型
        }
        fr.close();
    }

    public static void demo1() throws FileNotFoundException, IOException {
        FileReader fr = new FileReader("xxx.txt"); // 创建字符输入流
        char c = (char) fr.read(); // 读取一个字符并强转为char类型
        
        System.out.println(c);
        fr.close(); // 关流
    }
}
FileReader

 

 

字符流FileWriter

* A:FileWriter类的 write()方法可以自动把字符转为字节写出

技术分享图片

技术分享图片
package com.heima.chario;

import java.io.FileWriter;

public class Demo2_FileWriter {

    public static void main(String[] args) throws Exception {
        FileWriter fw = new FileWriter("yyy.txt"); // 创建字符输出流
        fw.write("大家好,基础班快接近尾声了,大家要努力啊!!"); // 写入字符串,底层通过编码表翻译后用字节写入
        fw.write(97);
        fw.close(); // 关流
    }
}
FileWriter

 

 

什么情况下使用字符流

* 字符流也可以拷贝文本文件,但不推荐是同,因为读取时会把字节转为字符,写入时会把字符转为字节
* 程序如果只需要读取一段文本或者只需要写出一段文本的时候,可以使用字符流
  * 因为读取的时候是按照字符的大小读取的,不会出现半个中文的情况
  * 写入的是红可以直接将字符串写出,不用转换为字节

* 字符流不可以拷贝非纯文本文件
  * 因为再读的时候会将字节转换为字符,在转换的过程中可能找不到对应的字符,就会用?代替
  * 如果读取为?,写出时也是?的字节,这样文件的乱码了

技术分享图片

 

 

用字符流拷贝文件

 

Java I/O流 03

原文:https://www.cnblogs.com/zhaochuming/p/12712270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!