IO流之字符输入流

 字符流是什么

 字符流的读写类

 

字符流的输入流 

空参read()方法

public class FileReader学 {
    public static void main(String[] args) throws IOException {
        /*
        字符输入流
        1、创建对象
        public FileReader(File file)        创建字符输入流关联本地文件
        public FileReader(String pathName)  创建字符输入流关联本地文件

       2、读取数据
       public int read()                    读取数据,读到末尾返回-1
       public int read(char[] buffer)       读取多个数据,读到末尾返回-1

       3、释放资源
       public void close();                 释放资源/关闭流
         */

        //1、创建对象
        FileReader fr=new FileReader("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt");

        //2、读取数据read()
        //字符流的底层是字节流,也是一个字节一个字节读取的
        //如果遇到中文,就会一次读取多个,GBK(他的编码方式就是他字符集的名字)一次读取两个,UTF-8一次读取多个

        /*
        read()细节
        1、默认也是一个字节一个字节的读取,如果遇到中文会读取多个字节
        2、在读取过后,会在底层解码并且转化做十进制---->比如说遇到中文,按照三个字节的方式进行解码(UTF-8:1110 10 10)
        最终把这个十进制的数字返回
        3、想要看到这些中文汉字,把他们强制转换就可以了
         */
        int ch;
        while ((ch=fr.read())!=-1){
            System.out.print((char) ch);
        }

        //3、释放资源
        fr.close();
    }
}

有参read()方法

public class read有参 {
    public static void main(String[] args) throws IOException {
           /*
        字符输入流
        1、创建对象
        public FileReader(File file)        创建字符输入流关联本地文件
        public FileReader(String pathName)  创建字符输入流关联本地文件

       2、读取数据
       public int read()                    读取数据,读到末尾返回-1
       public int read(char[] buffer)       读取多个数据,读到末尾返回-1

       3、释放资源
       public void close();                 释放资源/关闭流
         */

      
        //1、创建对象
        FileReader fr=new FileReader("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt");

        //2、读取数据
        char[] chars=new char[2];
        int len;
        while((len= fr.read(chars))!=-1){
            System.out.print(new String(chars,0,len));
        }

        //3、释放资源
        fr.close();
    }
}

read细节


        read()细节:
 


        1、默认是一个一个字节读取的,但是遇到中文会一次读取多个字节


        2、在读取之后,方法的底层还会解码并且转换成十进制
        把这个数转换做十进制作为返回值
        这个十进制的数据也表示字符集上的数字


        英文:0110 0001
        read方法,解码并且转换成为97


        中文:1110010 10110001 10001001
        用read方法读取,转化做27721
        如果想要读取中文,把这些十进制数字(char)强制转换就好了


        read(数组)细节


        读取数据,解码,强制转换,三步合一,把强制转换后的数字放到数组中
   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值