outputstreamwriter和filewriter_类文件解析

outputstreamwriter和filewriter_类文件解析|–字符流(字符流=字节流+编码表。)|–字符输入流Reader——抽象类intread():一次读取一个字符intread(char[]chs):一次读取一…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

|--字符流( 字符流 = 字节流 +编码表。)
            |--字符输入流
                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):写一个字符串

@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.net/194876.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 最长递增子序列的三种算法

    最长递增子序列的三种算法转载自:http://qiemengdao.iteye.com/blog/1660229最长递增子序列 问题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5,6,7,1,2,8},则其最长的单调递增子序列为{5,6,7,8},长度为4.解法1:最长公共子序列法这个问题

    2022年4月29日
  • java微信自动回复机器人开发(java微信开发学习笔记3)「建议收藏」

    java微信自动回复机器人开发(java微信开发学习笔记3)「建议收藏」微信自动回复机器人原理很简单,获取用户发送到后台的数据,然后调用机器人的api进行回复即可。我使用的茉莉机器人,官网地址如下:http://www.itpk.cn/茉莉机器人的api:http://www.itpk.cn/robot.php接口比较简单,看看就会,我直接上源代码下面代码同样基于之前的微博,需要的可以去看一下:http://blog.csdn.net/zxxz520

    2022年9月27日
  • 关于vueThink框架打包发布的一些问题

    关于vueThink框架打包发布的一些问题

    2021年10月11日
  • 自学数据挖掘十大算法之AdaBoost「建议收藏」

    自学数据挖掘十大算法之AdaBoost「建议收藏」Adaboost简介:Adaboost(adaptiveboosting)是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。该算法其实是一个简单的弱分类算法提升过程

    2022年5月4日
  • cocos creator编写2048小游戏,发微信小游戏

    cocos creator编写2048小游戏,发微信小游戏

    2021年3月12日
  • chmod命令详细用法

    chmod命令详细用法指令名称:chmod使用权限:所有使用者使用方式:chmod[-cfvR][–help][–version]modefile…说明:Linux/Unix的档案调用权限分为三级:档案拥有者、群组、其他。利用chmod可以藉以控制档案如何被他人所调用。参数:mode:权限设定字串,格式如下:[ugoa…][[±=][rwxX]…][,…],其中…

    2022年6月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号