Writer、Reader

本文深入解析Java中的字符流,包括Reader和Writer的使用方法,如read()和write(),并探讨了字符流与字节流的区别及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符流分为两种:Reader(字符输入流)、Writer(字符输出流)
Reader是一个抽象类,要进行文件读取,使用子类FileReader;
Writer是一个抽象类,要将数据输入到文件中,使用子类FileWrite;
Reader的**read()**方法:

 public static void main(String[] args)  {

        File infile = new File("D:/test/input.txt");
        File outfile = new File("D:/test/output.txt");
        Reader reader=null;
        Writer writer=null;
        try {
             reader=new FileReader(infile);
             writer=new FileWriter(outfile);
             int value=-1;
           while ((value=reader.read())!=-1){
               writer.write(value);
           }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            /*如果不关闭流的话,则数据无法写入到文件中,数据就有可能保存在缓存中并没有输出到目标源*/
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

Reader的**read(char[ ] b)**方法:

   public static void main(String[] args) {

        File infile = new File("D:/test/input.txt");
        Reader reader=null;
        try {
            reader=new FileReader(infile);
            int len=-1;
            char[] chars=new char[3];
            while((len=reader.read(chars))!=-1){ //同样的将从文件中读取的数据存放在数组中,
                System.out.println(chars);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

Writer的write()方法:
Writer的write(char[ ] b)方法:
Writer类还提供了一个直接输出字符串的方法:write(String str):

  public static void main(String[] args) {
        File file=new File("D:/test/output.txt");
        Writer writer=null;
        try {
            writer=new FileWriter(file);
            /*输出字节流的write方法可以写new char[],String,int*/
            writer.write(1);//int型
            writer.write("hello");//String型
            writer.write(new char[]{'a','b','c'});//字符数组
            writer.write("world",1,3);//带有长度的输出,范围是world的[1,3)范围内的字符
        } catch (IOException e) {
            e.printStackTrace();
        }finally {     /*特别注意的是,如果不关闭数据流的话,则数据写不到文件中,数据就有可能保存在缓存中并没有输出到目标源*/
            if(writer!=null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

但是Reader没有提供读取字符串的方法,只能通过读取字符来实现字符串的读取了;

如果字符流不关闭,数据就有可能保存在缓存中无法输出到目标源。这种情况下就必须强制刷新flush才能够得到完整数据:

public static void main(String[] args) {
        File file=new File("D:/test/output.txt");
        Writer writer=null;
        try {
            writer=new FileWriter(file);
            /*输出字节流的write方法可以写new char[],String,int*/
            writer.write(new char[]{'a','b','c','d','e'},1,2);
            writer.write("world",1,3);
            /*如果不关闭数据流,则需要强制刷新,将缓存区的数据输出到目标文件,否则就无法将数据写到文件中*/
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Reader类同样继承了Closeable接口,Closeable继承了AutoCloseable;Writer类继承了AutoCloseable接口;
所以它们也可以通过将创建对象的过程写在try()的括号中,实现自动关闭字符流。

字符流(Reader、Writer)适合处理中文,字节流(InputStream、OutputStream)适合处理一切数据类型,所以通常使用字节流

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值