栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA学习笔记14 IO流(2)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA学习笔记14 IO流(2)

编码与解码方式必须是同一种方式,不然会解析错误,造成乱码。


使用InputStreamReader可以用指定方式如:UTF-8,GBK读取字符流。
使用OutputStreamReader可以用指定方式写入字符流。
如果写入的是中文,但是却用的GBK方式写入,那么文件中也会出现乱码,但是如果读取的时候依然使用GBK方式读出,那么也可以成功读出这个中文。

这个与FileOutputStream的write的区别在于,write写入的是字符的某个字符集的二进制编码。
而OutputStreamReader是可以直接写入某个字符,然后打开文件的时候,文件使用这个指定的方式编码展示这个字符。如:写入”中国“,”UTG-8",那么文件中存的就是UTF-8下的"中国"。
也可以写二进制编码,然后在文件中被转换为二进制编码对应编码集的那个字符,如osw.write(99) 写入的就是c

public class StringDemo {
    public static void main(String[] args) throws IOException {
        String s="中国";

//        byte[]  bys=s.getBytes();
        byte[] bys=s.getBytes("UTF-8");
        System.out.println(Arrays.toString(bys));

        String ss=new String(bys,"UTF-8");
        System.out.println(ss);

        FileOutputStream fos=new FileOutputStream("ieda_test\src\IO\fos.txt");
        OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");
        osw.write("中国");
        osw.close();

        InputStreamReader isr=new InputStreamReader(new FileInputStream("ieda_test\src\IO\fos.txt"),"GBK");
        int ch;
        while ((ch=isr.read())!=-1){
            System.out.print((char)ch);
        }
        isr.close();

}
}

执行结果:
fos.txt中的内容:

public class OutputStreamDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos=new FileOutputStream("ieda_test\src\IO\fos.txt");
        OutputStreamWriter osw=new OutputStreamWriter(fos);
        osw.write("中国!!");
    }
}

fos.txt中:什么也没有写入

原因:采用字符流写数据不能直接写入到文件中,而是通过FileOutputStream才能写入,现在其实还是在一个缓冲区中,要让数据从缓冲区进入到文件中去,需要使用
ows.flush()或者ows.close()才行。


需要注意:这里的便捷类只是在写和读数据的时候可以使用,如果涉及编码与解码问题,那么还是只能使用InputStreamReader和OutputStreamReader.


和字节缓冲流一样,速度更快了。但是还是有以下区别

要换行,可以加换行符rn但不同操作系统的换行符都不一样,所以这样不太好,可以使用newline()来分行
同样的,可以使用readLine( )来只读取一行内容。

新年快乐!!

补充总结:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692707.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号