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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liangjinhu/article/details/88228221

字节流:

              创建或读取外部文件,将数据以字节流形式存储或输出,数据类型: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

猜你喜欢

转载自blog.csdn.net/liangjinhu/article/details/88228221