前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >outputstreamwriter和filewriter_类文件解析

outputstreamwriter和filewriter_类文件解析

作者头像
全栈程序员站长
发布2022-10-01 13:44:40
3090
发布2022-10-01 13:44:40
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
复制
|--字符流( 字符流 = 字节流 +编码表。)
            |--字符输入流
                Reader                                   ------抽象类 
                    int read():一次读取一个字符
                    int read(char[] chs):一次读取一个字符数组

                    |--InputStreamReader                 ------extends  Reader
                        InputStreamReader = FileInputStream + 编码表(GBK)
                        |--FileReader                    ------extends InputStreamReader
                            FileReader = FileInputStream + 编码表(GBK)


                    |--BufferedReader                    ------extends  Reader
                        String readLine():一次读取一个字符串

                    |--StringReader                      ------extends  Reader

            |--字符输出流
                Writer                                   ------抽象类 
                    void write(int ch):一次写一个字符
                    void write(char[] chs,int index,int len):一次写一个字符数组的一部分

                    |--OutputStreamWriter                ------extends Writer
                            OutputStreamWriter = FileOutputStream + 编码表(GBK)
                        |--FileWriter                    ------extends OutputStreamWriter
                            FileWriter = FileOutputStream + 编码表(GBK)

                    |--BufferedWriter                    ------extends Writer
                        void newLine():写一个换行符
                        void write(String line):一次写一个字符串

                    |--PrintWriter                       ------extends Writer
                    |--StringWriter                      ------extends Writer
  • OutputStreamWriter :OutputStreamWriter = FileOutputStream + 编码表(GBK)
  • 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
  • 每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给 write() 方法的字符没有缓冲。
  • 为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如: Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
  • 构造方法: -OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流 -OutputStreamWriter(OutputStream out,String charsetName):根据指定编码把字节流数据转换为字符流
  • 常用方法: -public void write(int c):写一个字符 -public void write(char[] cbuf):写一个字符数组 -public void write(char[] cbuf,int off,int len):写一个字符数组的一部分 -public void write(String str):写一个字符串
代码语言:javascript
复制
@Test
public void testOsw()throws Exception{

    String path = this.getClass().getResource("/test7").getPath();
    OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(new File(path)));
    osw.write("a");
    osw.write(98);
    osw.write("\n");

    osw.write(new char[]{'a','b','c','d','e'});
    osw.write("\n\r");

    osw.write(new char[]{'a','b','c','d','e'},0,2);
    osw.write("\n\r");

    osw.write("hello world");
    osw.write("\n\r");

    osw.write("hello world",0,5);
    osw.write("\n\r");

    osw.flush();
    osw.close();
}

@Test
public void testBw()throws Exception{

    String path = this.getClass().getResource("/test7").getPath();

    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path))));

    bw.write("a");
    bw.write(98);
    bw.write("\n");
    bw.newLine();

    bw.write(new char[]{'a','b','c','d','e'});
    bw.write("\n\r");

    bw.write(new char[]{'a','b','c','d','e'},0,2);
    bw.write("\n\r");

    bw.write("hello world");
    bw.write("\n\r");

    bw.write("hello world",0,5);
    bw.write("\n\r");

    bw.flush();
    bw.close();
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194876.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月11日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档