FileWriter类

  • Post author:
  • Post category:其他



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


();

}

}

输出结果


:

黑马

程序员

字符流,只能操作文本文件,不能操作图片,视频等非文本文件。

当我们单纯读或者写文本文件时 使用字符流 其他情况使用字节流



版权声明:本文为qq_320922199原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。