FileWriter滞伟、FileReader

1. 【應(yīng)用】IO流概述及FileWriter類使用

a. 【了解】能夠闡述IO流的作用

數(shù)據(jù)的傳輸鲁驶、java對(duì)數(shù)據(jù)的操作都是通過(guò)流的方式


圖片.png
b. 【應(yīng)用】能夠獨(dú)立完成利用FileWriter向文本文件中寫數(shù)據(jù)以及追加數(shù)據(jù)

1狈惫、FlieWriter

FileWriter 用于寫入字符流客冈。要寫入原始字節(jié)流,請(qǐng)考慮使用 FileOutputStream。
常用構(gòu)造方法:

根據(jù)給定的文件名構(gòu)造一個(gè) FileWriter 對(duì)象蚜迅。 
參數(shù):
fileName - 一個(gè)字符串吵血,表示與系統(tǒng)有關(guān)的文件名。 
拋出: 
IOException - 如果指定文件存在袄友,但它是一個(gè)目錄,而不是一個(gè)常規(guī)文件卑雁;或者該文件不存在篮赢,但無(wú)法創(chuàng)建它矾麻;抑或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它

根據(jù)給定的文件名以及指示是否附加寫入數(shù)據(jù)的 boolean 值來(lái)構(gòu)造 FileWriter 對(duì)象累奈。 

參數(shù):
fileName - 一個(gè)字符串突委,表示與系統(tǒng)有關(guān)的文件名。
append - 一個(gè) boolean 值纷跛,如果為 true,則將數(shù)據(jù)寫入文件末尾處勒叠,而不是寫入文件開(kāi)始處噪舀。 
拋出: 
IOException - 如果指定文件存在净响,但它是一個(gè)目錄惠毁,而不是一個(gè)常規(guī)文件;或者該文件不存在蛔趴,但無(wú)法創(chuàng)建它;亦或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它
FileWriter(String fileName) 
         根據(jù)給定的 File 對(duì)象構(gòu)造一個(gè) FileWriter 對(duì)象利术。 

參數(shù):
file - 要寫入數(shù)據(jù)的 File 對(duì)象良姆。 
拋出: 
IOException - 如果該文件存在陆馁,但它是一個(gè)目錄捺萌,而不是一個(gè)常規(guī)文件;或者該文件不存在壮锻,但無(wú)法創(chuàng)建它灰殴;抑或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它

根據(jù)給定的 File 對(duì)象構(gòu)造一個(gè) FileWriter 對(duì)象掰伸。如果第二個(gè)參數(shù)為 true多搀,則將字節(jié)寫入文件末尾處催跪,而不是寫入文件開(kāi)始處榛鼎。 

參數(shù):
file - 要寫入數(shù)據(jù)的 File 對(duì)象
append - 如果為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開(kāi)始處 
拋出: 
IOException - 如果該文件存在队丝,但它是一個(gè)目錄靡馁,而不是一個(gè)常規(guī)文件;或者該文件不存在机久,但無(wú)法創(chuàng)建它臭墨;抑或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它

FileWriter向文件中寫數(shù)據(jù)操作步驟:
a:使用FileWriter流關(guān)聯(lián)文件
b:利用FileWriter的寫方法寫數(shù)據(jù) write()
c:利用FileWriter的刷新方法將數(shù)據(jù)從內(nèi)存刷到硬盤上 flush()
d:利用FileWriter的關(guān)流方法將釋放占用的系統(tǒng)底層資源 close()
代碼:

public class FileWriteTest {
    public  static  void main(String[] args) {
        FileWriterTest1();
        FileWriterTest2();
    }
    public static void  FileWriterTest1(){
        //第一種方式,直接使用fileName
        FileWriter fw = null;
        try {
            fw = new FileWriter("c:\\a.txt");
            fw.write("IO你好");
            fw.flush();

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try{
                if(null != fw)
                    fw.close();
            }catch (IOException e) {

            }
        }
    }
    public static void FileWriterTest2(){
        //使用文件格式
        FileWriter  fw2 = null;
        try {
            fw2 = new FileWriter(new File("c://b.txt"));
            fw2.write("file");
            fw2.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(null != fw2) {
                try{
                    fw2.close();
                }catch (IOException e){

                }
            }
        }
    }
}
c. 【應(yīng)用】能夠理解并用代碼測(cè)試write()的重載方法

void write(String str):寫一個(gè)字符串?dāng)?shù)據(jù)
void write(String str,int index,int len):寫一個(gè)字符串中的一部分?jǐn)?shù)據(jù)
void write(int ch):寫一個(gè)字符數(shù)據(jù),這里寫int類型的好處是既可以寫char類型的數(shù)據(jù)吞加,也可以寫char對(duì)應(yīng)的int類型的值裙犹。'a',97
void write(char[] chs):寫一個(gè)字符數(shù)組數(shù)據(jù)

2. 【應(yīng)用】FileReader類使用和緩沖流使用

a. 【應(yīng)用】能夠獨(dú)立使用FileReader讀數(shù)據(jù)一次讀取一個(gè)字符

使用read()方法

public class FileReaderTest {

    public static void main(String[] args) {
        readCharOneByOne("c://a.txt");
        readCharOneByOne(new File("c://b.txt"));
    }

    public static void readCharOneByOne(String fileName) {
        FileReader reader = null;
        try {
            reader = new FileReader(fileName);
            int ch = 0;
            while ((ch = reader.read()) != -1) {
                System.out.println((char) (ch));
            }
        } catch (IOException e) {

        }

    }

    public static void readCharOneByOne(File file) {
        FileReader reader = null;
        try {
            reader = new FileReader(file);
            int ch = 0;
            while ((ch = reader.read()) != -1) {
                System.out.println((char) (ch));
            }
        } catch (IOException e) {

        }

    }
}
b. 【應(yīng)用】能夠?qū)懗隼肍ileReader和FileWrtie完成文本文件復(fù)制的兩種方式

\color{red}{第一種:讀一個(gè)字符寫一個(gè)字符}

 public static void  copyIFileTest1(String srcFileName, String dstFileName){
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader(srcFileName);
            fw = new FileWriter(dstFileName);
            int ch = 0;
            while ((ch = fr.read())!=-1) {
                fw.write((char)ch);
            }
            fw.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {

        }finally {
            if(null != fr) {
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(null != fw) {
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

\color{red}{第二種:用一個(gè)字符數(shù)組存儲(chǔ)讀取的字符,最后一起寫入文本}

public static  void  copyFileTest2(String srcFileName, String dstFileName) {
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader(srcFileName);
            fw = new FileWriter(dstFileName);
            char [] ch = new char[1024];
            int len = 0;
            while ((len = fr.read(ch))!= -1) {
                fw.write(ch, 0, len);
            }
            fw.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {

        } finally {
            if(null != fr) {
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(null != fw) {
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
c. 【應(yīng)用】能夠使用緩沖流BufferedReader和BufferedWriter完成文本文件復(fù)制
d. 【應(yīng)用】能夠使用readLine()和newLine()完成文本文件復(fù)制

3. 【應(yīng)用】IO流相關(guān)案例

a. 【應(yīng)用】能夠熟練寫出復(fù)制文本文件的五種方式
b. 【應(yīng)用】能夠獨(dú)立完成將集合中的數(shù)據(jù)寫到文本文件中
c. 【應(yīng)用】能夠?qū)⑽谋疚募臄?shù)據(jù)讀取到集合中
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衔憨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子袄膏,更是在濱河造成了極大的恐慌践图,老刑警劉巖沉馆,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揖盘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兽狭,警方通過(guò)查閱死者的電腦和手機(jī)服球,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門伐庭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渣叛,“玉大人淳衙,你說(shuō)我怎么就攤上這事⊙ヵ耍” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)藏畅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)榜旦,這世上最難降的妖魔是什么澡屡? 我笑而不...
    開(kāi)封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任休偶,我火速辦了婚禮词顾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘上忍。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布尊搬。 她就那樣靜靜地躺著亲茅,像睡著了一般腔长。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胆绊,一...
    開(kāi)封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天欧募,我揣著相機(jī)與錄音压状,去河邊找鬼种冬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼烤蜕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泡徙!你這毒婦竟也來(lái)了橱鹏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤礁竞,失蹤者是張志新(化名)和其女友劉穎糖荒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體模捂,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捶朵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蜘矢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片综看。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡品腹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出红碑,到底是詐尸還是另有隱情舞吭,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布句喷,位于F島的核電站镣典,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏唾琼。R本人自食惡果不足惜兄春,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锡溯。 院中可真熱鬧赶舆,春花似錦、人聲如沸祭饭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)倡蝙。三九已至九串,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寺鸥,已是汗流浹背猪钮。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胆建,地道東北人烤低。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像笆载,于是被迫代替她去往敵國(guó)和親扑馁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容