服务器之家

服务器之家 > 正文

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

时间:2020-01-08 14:28     来源/作者:goldensun

面向字符的输出流都是类 Writer 的子类,其类层次结构如图所示。
详解Java编程中面向字符的输出流
下表列出了 Writer 的主要子类及说明。

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

使用 FileWriter 类写入文件

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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 文件,显示内容为:

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


使用 BufferedWriter 类写入文件

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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()方法在每行数据后加入回车,以保证目标文件与源文件相一致。

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
返回顶部