詳解Java編程中面向字符的輸出流
面向字符的輸出流都是類(lèi) Writer 的子類(lèi),其類(lèi)層次結(jié)構(gòu)如圖所示。

下表列出了 Writer 的主要子類(lèi)及說(shuō)明。

使用 FileWriter 類(lèi)寫(xiě)入文件
FileWriter 類(lèi)是 Writer 子類(lèi) OutputStreamWriter 類(lèi)的子類(lèi),因此 FileWriter 類(lèi)既可以使用 Writer類(lèi)的方法也可以使用 OutputStreamWriter 類(lèi)的方法來(lái)創(chuàng)建對(duì)象。
在使用 FileWriter 類(lèi)寫(xiě)入文件時(shí),必須先調(diào)用 FileWriter()構(gòu)造方法創(chuàng)建 FileWriter 類(lèi)的對(duì)象,再調(diào)用 writer()方法。FileWriter 構(gòu)造方法的格式為:
public FileWriter(String name); //根據(jù)文件名創(chuàng)建一個(gè)可寫(xiě)入的輸出流對(duì)象 public FileWriter(String name,Boolean a); //a 為真,數(shù)據(jù)將追加在文件后面
【例】利用 FileWriter 類(lèi)將 ASCⅡ字符寫(xiě)入到文件中
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){}
}
}
運(yùn)行后程序后,打開(kāi) ep10_3.txt 文件,顯示內(nèi)容為:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}
使用 BufferedWriter 類(lèi)寫(xiě)入文件
BufferedWriter 類(lèi)是用來(lái)將數(shù)據(jù)寫(xiě)入到緩沖區(qū)。使用時(shí)必須創(chuàng)建 FileWriter 類(lèi)對(duì)象,再以該對(duì)象為參數(shù)創(chuàng)建 BufferedWriter 類(lèi)的對(duì)象,最后需要用 flush()方法將緩沖區(qū)清空。BufferedWriter類(lèi)有兩個(gè)構(gòu)造方法,其格式為:
public BufferedWriter(Writer out); //創(chuàng)建緩沖區(qū)字符輸出流 public BufferedWriter(Writer out,int size); //創(chuàng)建輸出流并設(shè)置緩沖區(qū)大小
【例】利用 BufferedWriter 類(lèi)進(jìn)行文件復(fù)制
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 行數(shù)據(jù)寫(xiě)入輸出流
out.newLine(); //寫(xiě)入換行符
}
out.flush();
in.close();
out.close();
}
catch(IOException e){
System.out.println("出現(xiàn)錯(cuò)誤"+e);
}
}
}
需要注意的是,調(diào)用 out 對(duì)象的 write()方法寫(xiě)入數(shù)據(jù)時(shí),不會(huì)寫(xiě)入回車(chē),因此需要使用newLine()方法在每行數(shù)據(jù)后加入回車(chē),以保證目標(biāo)文件與源文件相一致。
相關(guān)文章
使用BeanFactory實(shí)現(xiàn)創(chuàng)建對(duì)象
這篇文章主要為大家詳細(xì)介紹了使用BeanFactory實(shí)現(xiàn)創(chuàng)建對(duì)象,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Array?Index?Out?of?Bounds:數(shù)組越界錯(cuò)誤解決方案及調(diào)試技巧
數(shù)組越界訪問(wèn)是指訪問(wèn)數(shù)組中超出其有效索引范圍的元素,這是一種常見(jiàn)的編程錯(cuò)誤,可能導(dǎo)致程序崩潰或數(shù)據(jù)損壞,下面這篇文章主要給大家介紹了關(guān)于Array?Index?Out?of?Bounds:數(shù)組越界錯(cuò)誤解決方案及調(diào)試技巧的相關(guān)資料,需要的朋友可以參考下2024-08-08
Java實(shí)現(xiàn)反轉(zhuǎn)一個(gè)鏈表的示例代碼
本文主要介紹了Java實(shí)現(xiàn)反轉(zhuǎn)一個(gè)鏈表的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore
這篇文章主要介紹了關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Java中一個(gè)線程執(zhí)行死循環(huán)有什么后果
這篇文章主要為大家詳細(xì)介紹了Java中一個(gè)線程執(zhí)行死循環(huán)有什么后果,當(dāng)一個(gè)線程在執(zhí)行死循環(huán)時(shí)會(huì)影響另外一個(gè)線程嗎,下面為大家揭曉2016-05-05
解決spring boot 1.5.4 配置多數(shù)據(jù)源的問(wèn)題
下面小編就為大家?guī)?lái)一篇解決spring boot 1.5.4 配置多數(shù)據(jù)源的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
Spring中的之啟動(dòng)過(guò)程obtainFreshBeanFactory詳解
這篇文章主要介紹了Spring中的之啟動(dòng)過(guò)程obtainFreshBeanFactory詳解,在refresh時(shí),prepareRefresh后,馬上就調(diào)用了obtainFreshBeanFactory創(chuàng)建beanFactory以及掃描bean信息(beanDefinition),并通過(guò)BeanDefinitionRegistry注冊(cè)到容器中,需要的朋友可以參考下2024-02-02
SpringBoot整合MybatisPlus實(shí)現(xiàn)增刪改查功能
MybatisPlus是國(guó)產(chǎn)的第三方插件,?它封裝了許多常用的CURDapi,免去了我們寫(xiě)mapper.xml的重復(fù)勞動(dòng)。本文將整合MybatisPlus實(shí)現(xiàn)增刪改查功能,感興趣的可以了解一下2022-05-05
使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁(yè)的實(shí)現(xiàn)方法分享
這篇文章主要介紹了使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁(yè)的實(shí)現(xiàn)方法分享,利用到了Java中的文件io包,需要的朋友可以參考下2015-11-11
Springboot如何通過(guò)yml配置文件為靜態(tài)成員變量賦值
這篇文章主要介紹了Springboot如何通過(guò)yml配置文件為靜態(tài)成員變量賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

