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Ⅱ字符写入到文件中
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); //创建输出流并设置缓冲区大小
【例 10-4】利用 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()方法在每行数据后加入回车,以保证目标文件与源文件相一致。
Java知多少(68)面向字符的输出流的更多相关文章
- 八. 输入输出(IO)操作3.面向字符的输出流
面向字符的输出流都是类 Writer 的子类,其类层次结构如图 10-5 所示. 图10-5 Writer的类层次结构图 表 10-3 列出了 Writer 的主要子类及说明. 表 10-3 Writ ...
- Java知多少(完结篇)
Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java ...
- Java知多少(中)
Java知多少(上) )interface接口 )接口和抽象类的区别 )泛型详解 )泛型通配符和类型参数的范围 )异常处理基础 )异常类型 )未被捕获的异常 )try和catch的使用 )多重catc ...
- Java知多少(69)面向字节的输入输出流
字节流以字节为传输单位,用来读写8位的数据,除了能够处理纯文本文件之外,还能用来处理二进制文件的数据.InputStream类和OutputStream类是所有字节流的父类. InputStream类 ...
- Java知多少(67)面向字符的输入流
字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件. Reader和Writer是java.io包中所有字符流的父类.由于它们都是抽象类,所以应使用 ...
- Java知多少(70)面向字节流的应用
文件输入输出流 文件输入输出流 FileInputStream 和 FileOutputStream 负责完成对本地磁盘文件的顺序输入输出操作. [例 10-5]通过程序创建一个文件,从键盘输入字符, ...
- Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式
解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式.面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和Out ...
- Java中面向字符的输入流
Java中面向字符的输入流 2016-12-04 Java程序员联盟 Java程序员联盟 Java程序员联盟 微信号 javalm 功能介绍 莫道君行早,更有早行人 全心敲代码,天道自酬勤 字符流是针 ...
- java io系列19之 CharArrayWriter(字符数组输出流)
本章,我们学习CharArrayWriter.学习时,我们先对CharArrayWriter有个大致了解,然后深入了解一下它的源码,最后通过示例来掌握它的用法. 转载请注明出处:http://www. ...
随机推荐
- Shiro自定义过滤器
项目中需要所有首次登录的用户必须修改密码才可使用系统,项目采用的是Shiro框架. 突然想到了配置文件org.apache.shiro.spring.web.ShiroFilterFactoryBea ...
- __NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xb000000000000003
出现这个报错的原因是:拿数字与字符串进行对比了. 检查两边的数据格式是否一致 如果不一致,可以使用[nsstring stringwithformate:@"%d",xx]包装一下 ...
- Java API概述
collection of APIs(Application Programming Interface) java.lang — automatically imported into Java p ...
- UDP中使用bind和connect的作用
1:UDP中可以使用connect系统调用 2:UDP中connect操作与TCP中connect操作有着本质区别. TCP中调用connect会引起三次握手,client与server建立连结.UD ...
- Delphi自写组件:可设置颜色的按钮
unit ColorButton; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls; ...
- python测试开发django-46.xadmin添加action动作
前言 Action插件在数据列表页面上提供数据选择功能.可以在Action之后专门处理所选数据.批量删除功能作为默认操作提供. action文档 要启用Action,开发人员可以设置Model Opt ...
- Android Studio下加入百度地图的使用 (一)——环境搭建
最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在AndroidStudio中使用还是存在一些不稳 ...
- Linux系统中安装使用百度云网盘
百度云没有Linux客户端,于是有大神用Go语言写出来一个叫BaiduPCS-Go的命令行盘客户端,可以通过终端操作百度云盘,在Linux上实现上传下载.但是因为是命令行版本的,对没有命令行使用基础的 ...
- HDu 2544 最短路【dijkstra & floyed & SPFA 】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Juno Puppet Opertaors Meetup小结
今年五月刚结束的Juno OpenStack Summit是半年一度的Openstack盛会,抛去那些迷花渐欲乱人眼的商业活动,我们来看一看本届summit puppet-openstack社区有哪些 ...