详解Java编程中面向字符的输出流

 更新时间:2015年10月07日 15:44:16   转载 投稿:goldensun  
这篇文章主要介绍了Java编程中面向字符的输出流,是Java入门学习中的基础知识,需要的朋友可以参考下

面向字符的输出流都是类 Writer 的子类,其类层次结构如图所示。

下表列出了 Writer 的主要子类及说明。

使用 FileWriter 类写入文件

FileWriter 类是 Writer 子类 OutputStreamWriter 类的子类,因此 FileWriter 类既可以使用 Writer类的方法也可以使用 OutputStreamWriter 类的方法来创建对象。

在使用 FileWriter 类写入文件时,必须先调用 FileWriter()构造方法创建 FileWriter 类的对象,再调用 writer()方法。FileWriter 构造方法的格式为:

  public FileWriter(String name); //根据文件名创建一个可写入的输出流对象
  public FileWriter(String name,Boolean a); //a 为真,数据将追加在文件后面

【例】利用 FileWriter 类将 ASCⅡ字符写入到文件中

import java.io.*;
class ep10_3{
  public static void main(String args[]){
    try{
      FileWriter a=new FileWriter("ep10_3.txt");
      for(int i=32;i<126;i++){
        a.write(i);
      }
      a.close();
    }
    catch(IOException e){}
  }
}

运行后程序后,打开 ep10_3.txt 文件,显示内容为:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}


使用 BufferedWriter 类写入文件

BufferedWriter 类是用来将数据写入到缓冲区。使用时必须创建 FileWriter 类对象,再以该对象为参数创建 BufferedWriter 类的对象,最后需要用 flush()方法将缓冲区清空。BufferedWriter类有两个构造方法,其格式为:

  public BufferedWriter(Writer out); //创建缓冲区字符输出流
  public BufferedWriter(Writer out,int size); //创建输出流并设置缓冲区大小

【例】利用 BufferedWriter 类进行文件复制

import java.io.*;
class ep10_4{
  public static void main(String args[]){
    String str=new String();
    try{
      BufferedReader in=new
      BufferedReader(new FileReader("ep10_4_a.txt"));
      BufferedWriter out=new
      BufferedWriter(new FileWriter("ep10_4_b.txt"));
      while((str=in.readLine())!=null){
        System.out.println(str);
        out.write(str); //将读取到的 1 行数据写入输出流
        out.newLine(); //写入换行符
      }
      out.flush();
      in.close();
      out.close();
    }
    catch(IOException e){
      System.out.println("出现错误"+e);
    }
  }
}

需要注意的是,调用 out 对象的 write()方法写入数据时,不会写入回车,因此需要使用newLine()方法在每行数据后加入回车,以保证目标文件与源文件相一致。

相关文章

  • idea中MavenWeb项目不能创建Servlet的解决方案

    idea中MavenWeb项目不能创建Servlet的解决方案

    这篇文章主要介绍了idea中MavenWeb项目不能创建Servlet的解决方案,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 详解MyBatis的getMapper()接口、resultMap标签、Alias别名、 尽量提取sql列、动态操作

    详解MyBatis的getMapper()接口、resultMap标签、Alias别名、 尽量

    这篇文章主要介绍了详解MyBatis的getMapper()接口、resultMap标签、Alias别名、 尽量提取sql列、动态操作的相关资料,需要的朋友可以参考下
    2016-08-08
  • java、php、C#、asp实现短信群发功能的方法

    java、php、C#、asp实现短信群发功能的方法

    这篇文章主要介绍了java、php、C#、asp实现短信群发功能的方法,以实例形式较为详细的分析了java及php、C#、asp、VB.NET等调用短信发送接口进行短信发送的功能,需要的朋友可以参考下
    2015-02-02
  • java基于TCP协议实现聊天程序

    java基于TCP协议实现聊天程序

    这篇文章主要为大家详细介绍了java基于TCP协议实现聊天程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • java中pdf转图片的实现方法

    java中pdf转图片的实现方法

    下面小编就为大家带来一篇java中pdf转图片的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Mybatis实现自定义类型转换器TypeHandler的方法

    Mybatis实现自定义类型转换器TypeHandler的方法

    Mybatis实现自定义的转换器非常的简单,只需要三步就可以实现自定义类型转换器TypeHandler,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07
  • Mybatis批量插入更新xml方式和注解方式的方法实例

    Mybatis批量插入更新xml方式和注解方式的方法实例

    这篇文章主要给大家介绍了关于Mybatis批量插入更新xml方式和注解方式的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 浅谈Hibernate n+1问题

    浅谈Hibernate n+1问题

    这篇文章主要介绍了浅谈Hibernate n+1问题,怎么解决n+1问题,文中也作了简要分析,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java创建和启动线程的两种方式实例分析

    Java创建和启动线程的两种方式实例分析

    这篇文章主要介绍了Java创建和启动线程的两种方式,结合实例形式分析了java多线程创建、使用相关操作技巧与注意事项,需要的朋友可以参考下
    2019-09-09
  • java对象转成byte数组的3种方法

    java对象转成byte数组的3种方法

    这篇文章主要为大家详细介绍了java对象转成byte数组的3种方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06

最新评论