首页 > 其他分享 >IO流 p9 转换流-InputStreamReader 和 OutputStreamWriter

IO流 p9 转换流-InputStreamReader 和 OutputStreamWriter

时间:2023-06-07 11:01:14浏览次数:30  
标签:OutputStreamWriter 字节 filePath p9 new InputStreamReader String

转换流-InputStreamReader 和 OutputStreamWriter

  • 介绍

    1. InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流);
    2. OutputStreamWriter:Writer的子类,实现将OutputStream(字节流)包装成Writer(字符流);
    3. 当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流转换成字符流;
    4. 可以在使用时指定编码格式(比如 utf-8,gbk,gb2312,ISO8859-1等),解决乱码问题;
  • InputStreamReader

    代码演示:

    import java.io.*;
    
    /**
     * @author: 86199
     * @date: 2023/5/7 17:18
     * @description: 演示使用 InputStreamReader 转换流解决中文乱码问题
     * 将字节流 FileInputStream 转换成字符流 InputStreamReader,指定编码 gbk/utf-8
     */
    public class InputStreamReader_ {
        public static void main(String[] args) throws IOException {
            String filePath = "e:\\a.txt";
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "gbk"));
    
            //读取
            String s = bufferedReader.readLine();
            System.out.println("读取内容 = " + s);
            //关闭流
            bufferedReader.close();
        }
    }
    
    
  • OutputStreamWriter

    代码演示:

    package com.hsp.transformation;
    
    import java.io.*;
    
    /**
     * @author: 86199
     * @date: 2023/5/7 17:31
     * @description: 演示 OutputStreamWriter 使用,把FileOutputStream 字节流,转成OutputStreamWriter
     * 指定处理的编码 gbk/utf-8/utf8
     */
    public class OutputStreamWriter_ {
        public static void main(String[] args) throws IOException {
            String filePath = "e:\\test.txt";
            String charSet = "utf8";
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(filePath), charSet);
    
            outputStreamWriter.write("只因你太美");
    
            outputStreamWriter.close();
    
            System.out.println("文件按照" + charSet + "保存成功");
        }
    }
    
    

标签:OutputStreamWriter,字节,filePath,p9,new,InputStreamReader,String
From: https://www.cnblogs.com/zh-Note/p/17455319.html

相关文章

  • P9394 紫丁香
    证明了自己思维不行。记一记自己的垃圾做法。首先是场上做法:考虑按位枚举钦定一个前缀,这样从最优化问题转化成判定性问题,更好处理。称钦定的前缀01状态为\(mask\),询问串和\(mask\)匹配的下标集合为\(goal\)。考虑按操作顺序从后往前添加操作,设当前前缀还没有跟\(mask\)......
  • P9241 [蓝桥杯 2023 省 B] 飞机降落
    题目描述N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti​ 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di​ 个单位时间,即它最早可以于 Ti​ 时刻开始降落,最晩可以于 +Ti​+Di​ 时刻开始降落。降落过程需要 Li​ 个单位时间。一架飞机......
  • P9370 APIO2023 赛博乐园 / cyberland
    P9370APIO2023赛博乐园/cyberland。题目就是让我们求一个有各种优惠政策的单源点\(0\),单汇点\(H\)的最短路。优惠政策是:到达能力为\(2\)的点,可以让之前走过的距离除以\(2\)。到达能力为\(0\)的点,可以让之前走过的距离直接变成\(0\)。有限制:不能经过\(H\)多次......
  • P9376 题解
    首先考虑怎么暴力。考虑把每个数进行\(B\)进制分解,然后我们惊奇的发现这两个操作就是把最低位去掉和往最低位后面插入一个数。然后我们顺藤摸瓜,把每个数的分解扔到Trie树上,我们发现我们要找到一个节点,使得所有单词节点到其的距离之和最短,答案就是这个最短距离。这里直接考......
  • P9356 「SiR-1」Bracket 题解
    P9356「SiR-1」Bracket题解首先我们来先考虑一下如何计算一个给定的\(f(s[1,n])\)。一般括号序列的题目都是比较套路的将\(\texttt{(}\)赋值为\(1\),将\(\texttt{)}\)赋值为\(-1\),然后求一下前缀和记为\(sum_i\),那么一个括号序列是合法的当且仅当\(\foralli\in[1,n],......
  • 「解题报告」P9197 [JOI Open 2016] 摩天大楼
    水个题。好像是连续段DP模板题,但是没怎么做过连续段DP。连续段DP大致思想就是对排列的计数,可以按照某个顺序依次填入每个数,将当前填的数看做若干连续段,每次考虑合并两个连续段,新建两个连续段或拓展一个连续段,然后就容易对排列进行计数了。这题有一个绝对值的限制,而我们可......
  • 「解题报告」P9195 [JOI Open 2016] JOIRIS
    发现上午高强度想题之后下午就啥都不想干了。神秘构造题,我属实是啥也不会了。先把下标改成从\(0\)开始。首先看到格子上的连续\(k\)的骨牌显然能想到将格子\(k\)染色。而由于有删除一行的操作,按照普通的染色方法好像并不好看,所以我们按列染色。这样我们统计每个颜色上的......
  • COMP90074 Web Security
    SchoolofComputingandInformationSystemsCOMP90074:WebSecurityAssignment3-ProjectPlutusDuedate:Nolaterthan11:59pmonSunday4thJune2023Weight:25%Markedoutof100Note:Allchallengeshaveaflagintheformat:FLAG{something_here}No......
  • P9344 去年天气旧亭台 代码
    不带滚动数组代码:#include<iostream>#include<cstdio>#include<cstring>#defineintlonglongusingnamespacestd;constintN=2000010;inta[N],c[N],T,n,f[N];signedmain(){ scanf("%lld",&T); while(T--){ mems......
  • 洛谷 P9344. 去年天气旧亭台
    去年天气旧亭台题目背景依旧是过往的天气,过往的楼台烟雨。时间悄悄流逝着,山河仍在,人却已不是过去的人……题目描述登上楼台,旧时满面沉灰的地板映入眼帘。共有$n$块地板,地板分为两类,第$i$块地板的类别用$c_i$表示,积灰程度用$a_i$表示。注意$c_i$为$0$或$1$。现......