JAVA基础一:字节流与字符流的区别、使用

字节流:

              创建或读取外部文件,将数据以字节流形式存储或输出,数据类型:byte。

              常用的实现类:FileInputStream/FileOutputStream。

              数据以字节的形式存储到文件中,也就是说存储的数据类型只能是byte类型,字符串必需转换为byte或byte数组,在存储到文件中。字节流是万能流,可以操作任意数据包括中文、西文。但在处理中文时比较麻烦。 

             字节流一般用在处理抽象文件上,用记事本打开,无法查看到实际内容的文件上,如图像、音视频,一些特殊的文件。

字符流:

            专门用来解决字节流处理可读性文档、文件时复杂的转换、繁琐问题,如处理中文。实质是:字节流+编码的实现形式,通过转换流OutputStreamWriter/InputStreamReader将字节流可以以某种指定的字符编码形式写入。不指定字符编码时,使用默认的编码,通过系统或平台指定。即你的项目是UFT-8则默认的字符编码时UFT-8.

            FileOutputWriter/FileInputWriter 直接子类:FileWriter/FileReader

           如下代码运行时不会出错,但查看文件时中文会出现乱码

           public static void write() throws IOException{       
        
             //指定编码方式
                 /BufferedWriter newW= new BufferedWriter(new OutputStreamWriter( new FileOutputStream("c.txt"),"UTF-8"));
                
                   BufferedReader newf= new BufferedReader(new InputStreamReader(new FileInputStream("编码转换.java")));
                 
                   String line=null;
        
                   while( (line=newf.readLine()) !=null){
                       newW.write(line);
                       newW.newLine();
                       newW.flush();      
        }
        newf.close();
        newW.close();
    }

原因:  写文件与读取文件的编码格式不一致.

转换流:

OutputStreamWriter/InputStreamReader

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技宅老

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值