Java知多少(68)面向字符的输出流
面向字符的输出流都是类 Writer 的子类,其类层次结构如图 10-5 所示。
图10-5 Writer的类层次结构图
表 10-3 列出了 Writer 的主要子类及说明。
类名 | 功能说明 |
---|---|
CharArrayWriter | 写到字符数组的输出流 |
BufferedWriter | 缓冲输出字符流 |
PipedWriter | 输出管道 |
OutputStreamWriter | 转换字符到字节的输出流 |
FilterWriter | 过滤输出流 |
StringWriter | 输出到字符串的输出流 |
PrintWriter | 包含 print()和 println()的输出流 |
FileWriter | 输出到文件的输出流 |
Writer 所提供的方法如表 10-4 所示。
方法 | 功能描述 |
---|---|
void close() | 关闭输出流 |
void flush() | 将缓冲区中的数据写到文件中 |
void writer(int c) | 将单一字符 c 输出到流中 |
void writer(String str) | 将字符串 str 输出到流中 |
void writer(char[] ch) | 将字符数组 ch 输出到流 |
void writer(char[] ch, int offset, int length) | 将一个数组内自 offset 起到 length 长的字符输出到流 |
使用 FileWriter 类写入文件
FileWriter 类是 Writer 子类 OutputStreamWriter 类的子类,因此 FileWriter 类既可以使用 Writer类的方法也可以使用 OutputStreamWriter 类的方法来创建对象。
在使用 FileWriter 类写入文件时,必须先调用 FileWriter()构造方法创建 FileWriter 类的对象,再调用 writer()方法。FileWriter 构造方法的格式为:
public FileWriter(String name); //根据文件名创建一个可写入的输出流对象
public FileWriter(String name,Boolean a); //a 为真,数据将追加在文件后面
【例 10-3】利用 FileWriter 类将 ASCⅡ字符写入到文件中
1 import java.io.*; 2 class ep10_3{ 3 public static void main(String args[]){ 4 try{ 5 FileWriter a=new FileWriter("ep10_3.txt"); 6 for(int i=32;i<126;i++){ 7 a.write(i); 8 } 9 a.close(); 10 } 11 catch(IOException e){} 12 } 13 }
运行后程序后,打开 ep10_3.txt 文件,显示内容为:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}
使用 BufferedWriter 类写入文件
BufferedWriter 类是用来将数据写入到缓冲区。使用时必须创建 FileWriter 类对象,再以该对象为参数创建 BufferedWriter 类的对象,最后需要用 flush()方法将缓冲区清空。BufferedWriter类有两个构造方法,其格式为:
public BufferedWriter(Writer out); //创建缓冲区字符输出流
public BufferedWriter(Writer out,int size); //创建输出流并设置缓冲区大小
【例 10-4】利用 BufferedWriter 类进行文件复制
1 import java.io.*; 2 class ep10_4{ 3 public static void main(String args[]){ 4 String str=new String(); 5 try{ 6 BufferedReader in=new 7 BufferedReader(new FileReader("ep10_4_a.txt")); 8 BufferedWriter out=new 9 BufferedWriter(new FileWriter("ep10_4_b.txt")); 10 while((str=in.readLine())!=null){ 11 System.out.println(str); 12 out.write(str); //将读取到的 1 行数据写入输出流 13 out.newLine(); //写入换行符 14 } 15 out.flush(); 16 in.close(); 17 out.close(); 18 } 19 catch(IOException e){ 20 System.out.println("出现错误"+e); 21 } 22 } 23 }
需要注意的是,调用 out 对象的 write()方法写入数据时,不会写入回车,因此需要使用newLine()方法在每行数据后加入回车,以保证目标文件与源文件相一致。
转载于:https://www.cnblogs.com/Coda/p/4516250.html
Java知多少(68)面向字符的输出流相关推荐
- 八. 输入输出(IO)操作3.面向字符的输出流
面向字符的输出流都是类 Writer 的子类,其类层次结构如图 10-5 所示. 图10-5 Writer的类层次结构图 表 10-3 列出了 Writer 的主要子类及说明. 表 10-3 Writ ...
- 面向字符的输入输出流
一:面向符的输入流 父类Reader为抽象类,不能被实例化.面向字符的输入流都是Reader类的子类,其类层次结构下图所示: 下表 列出了 Reader 的主要子类及说明 下表 列出了 Reader ...
- Java知多少(中)
Java知多少(上) Java知多少(39)interface接口 Java知多少(40)接口和抽象类的区别 Java知多少(41)泛型详解 Java知多少(42)泛型通配符和类型参数的范围 Java ...
- BufferedWriter_字符缓冲输出流
package com.learn.demo01.BufferedStream;import java.io.BufferedWriter; import java.io.FileWriter; im ...
- java面向字符的输入流_Java编程开发中面向字节的输入输出流
关于面向字符的输入流和输出流方面教程已经讲解完了,下面要介绍的就是Java编程开发中面向字节的输入输出流,希望本节内容可以帮助大家更好的学习Java. 教程回顾点击查看: 字节流以字节为传输单位,用来 ...
- Java I/O流——面向字符输入/输出流(超详细)
目录 前言 字符编码 面向字符输入/输出流类 转换流 转换输入流(InputStreamReader)类 转换输入流(InputStreamReader)类实例 转换输出流(OutputStreamW ...
- Java I/O流——面向字节的输入/输出流(超级详细)
目录 前言 流的概念 I/O设备与文件 面向字节的输入流 InputStream类 类InputStream的子类的使用 文件输入流(FileInputStream) 文件输入流(FileInputS ...
- java面向字符的输入流_详细解读Java编程中面向字符的输入流
字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件. Reader和Writer是java.io包中所有字符流的父类.由于它们都是抽象类,所以应使用 ...
- java字符流输出流_JAVA语言之IO流字符串输入输出流
本文主要向大家介绍了JAVA语言之IO流字符串输入输出流,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 概述 StringReader 字符输入流 和CharArrayReader类 ...
最新文章
- pycharm 基本设置
- 无法删除当前已连接的用户处理办法
- MySQL基本操作(表,字段)
- iptables--静态防火墙实例教程
- Centos8安装X11-forwarding图形服务
- 深入理解异步I/O+epoll+协程
- C# Socket 简易的图片传输
- [codeup 5038] 找零钱
- MATLAB傅里叶变换后寻找频谱次大值对应的位置
- mp4安装Linux,linux centos mp4box 安装教程
- EMC与电阻、电容和电感的关系
- Matplotlib confusion map显示不全
- mp3格式怎么转html格式转换器,flac转mp3格式转换器 如何将flac格式的音频文件转换为MP3格式...
- 工作表、工作簿保护密码关闭
- 数据解读热门美剧 | 《权力的游戏》花式死亡图鉴
- scanner.nextLine()和scanner.next();的区别
- html 实现下拉菜单
- android 天时分倒计时,Android倒计时(分钟)
- pdf合并页面怎么弄?如何把单页pdf合并到一起?
- python 文件操作 和 标准库