FileWriter类

本文详细介绍了Java中的FileWriter类,用于向文件写入字符数据。讨论了构造方法、基本写出数据、关闭和刷新操作,以及写出字符数组、字符串的方法。示例代码展示了如何使用FileWriter进行数据写出和文件操作,强调了关闭流的重要性。
摘要由CSDN通过智能技术生成
java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
构造方法
FileWriter(File file)
创建一个新的 FileWriter ,给定要读取的 File 对象。
FileWriter(String fileName)
创建一个新的 FileWriter ,给定要读取的文件的名称。
当你创建一个流对象时,必须传入一个文件路径,类似于 FileOutputStream
构造举例,代码如下
public class FileWriterConstructor {
public static void main ( String [] args ) throws IOException {
// 使用 File 对象创建流对象
File file = new File ( "a.txt" );
FileWriter fw = new FileWriter ( file );
// 使用文件名称创建流对象
FileWriter fw = new FileWriter ( "b.txt" );
}
}
基本写出数据
写出字符 write(int b) 方法,每次可以写出一个字符数据,代码使用演示:
public class FWWrite {
public static void main ( String [] args ) throws IOException {
// 使用文件名称创建流对象
FileWriter fw = new FileWriter ( "fw.txt" );
// 写出数据
fw . write ( 97 ); // 写出第 1 个字符
fw . write ( 'b' ); // 写出第 2 个字符
fw . write ( 'C' ); // 写出第 3 个字符
fw . write ( 30000 ); // 写出第 4 个字符,中文编码表中 30000 对应一个汉字。
/*
【注意】关闭资源时 , FileOutputStream 不同。
如果不关闭 , 数据只是保存到缓冲区,并未保存到文件。
*/
// fw.close();
}
}
输出结果:
abC
1. 虽然参数为 int 类型四个字节,但是只会保留一个字符的信息写出。
2. 未调用 close 方法,数据只是保存到了缓冲区,并未写出到文件中。
关闭和刷新
因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据
的。如果我们既想写出数据,又想继续使用流,就需要 flush 方法了。
flush :刷新缓冲区,流对象可以继续使用。
close : 先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
代码使用演示:
public class FWWrite {
public static void main ( String [] args ) throws IOException {
// 使用文件名称创建流对象
FileWriter fw = new FileWriter ( "fw.txt" );
// 写出数据,通过 flush
fw . write ( ' ' ); // 写出第 1 个字符
fw . flush ();
fw . write ( ' ' ); // 继续写出第 2 个字符,写出成功
fw . flush ();
// 写出数据,通过 close
fw . write ( ' ' ); // 写出第 1 个字符
fw . close ();
fw . write ( ' ' ); // 继续写出第 2 个字符 , 【报错】 java.io.IOException: Stream closed
fw . close ();
}
}
即便是 flflush 方法写出了数据,操作的最后还是要调用 close 方法,释放系统资源。
写出其他数据
1. 写出字符数组 write(char[] cbuf) write(char[] cbuf, int off, int len) ,每次可以写出字符数
组中的数据,用法类似 FileOutputStream ,代码使用演示:
public class FWWrite {
public static void main ( String [] args ) throws IOException {
// 使用文件名称创建流对象
FileWriter fw = new FileWriter ( "fw.txt" );
// 字符串转换为字节数组
char [] chars = " 黑马程序员 " . toCharArray ();
// 写出字符数组
fw . write ( chars ); // 黑马程序员
// 写出从索引 2 开始, 2 个字节。索引 2 ' ' ,两个字节,也就是 ' 程序 '
fw . write ( b , 2 , 2 ); // 程序
// 关闭资源
fos . close ();
}
}
2. 写出字符串 write(String str) write(String str, int off, int len) ,每次可以写出字符串中的
数据,更为方便,代码使用演示:
public class FWWrite {
public static void main ( String [] args ) throws IOException {
// 使用文件名称创建流对象
FileWriter fw = new FileWriter ( "fw.txt" );
// 字符串
String msg = " 黑马程序员 " ;
// 写出字符数组
fw . write ( msg ); // 黑马程序员
// 写出从索引 2 开始, 2 个字节。索引 2 ' ' ,两个字节,也就是 ' 程序 '
fw . write ( msg , 2 , 2 ); // 程序
// 关闭资源
fos . close ();
}
}
3. 续写和换行 :操作类似于 FileOutputStream
public class FWWrite {
public static void main ( String [] args ) throws IOException {
// 使用文件名称创建流对象,可以续写数据
FileWriter fw = new FileWriter ( "fw.txt" true );
// 写出字符串
fw . write ( " 黑马 " );
// 写出换行
fw . write ( "\r\n" );
// 写出字符串
fw . write ( " 程序员 " );
// 关闭资源
fw . close ();
}
}
输出结果 :
黑马
程序员
字符流,只能操作文本文件,不能操作图片,视频等非文本文件。
当我们单纯读或者写文本文件时 使用字符流 其他情况使用字节流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值