日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

File类 读取文件

發(fā)布時間:2025/4/16 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 File类 读取文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基本的輸出流包含OutputStreamWriter兩個,區(qū)別是OutputStream體系中的類(也就是OutputStream的子類)是按照字節(jié)寫入的,而Writer體系中的類(也就是Writer的子類)是按照字符寫入的。

?????????使用輸出流進行編程的步驟是:

?????????????????? 1、建立輸出流

????????????????????????????建立對應(yīng)的輸出流對象,也就是完成由流對象到外部數(shù)據(jù)源之間的轉(zhuǎn)換。

?????????????????? 2、向流中寫入數(shù)據(jù)

????????????????????????????將需要輸出的數(shù)據(jù),調(diào)用對應(yīng)的write方法寫入到流對象中。

?????????????????? 3、關(guān)閉輸出流

????????????????????????????在寫入完畢以后,調(diào)用流對象的close方法關(guān)閉輸出流,釋放資源。

?????????在使用輸出流向外部輸出數(shù)據(jù)時,程序員只需要將數(shù)據(jù)寫入流對象即可,底層的API實現(xiàn)將流對象中的內(nèi)容寫入外部數(shù)據(jù)源,這個寫入的過程對于程序員來說是透明的,不需要專門書寫代碼實現(xiàn)。

?????????在向文件中輸出數(shù)據(jù),也就是寫文件時,使用對應(yīng)的文件輸出流,包括FileOutputStreamFileWriter兩個類,下面以FileOutputStream為例子說明輸出流的使用。示例代碼如下:

? ?

import java.io.*;/*** 使用FileOutputStream寫文件示例*/ public class WriteFile1 {public static void main(String[] args) {String s = "Java語言";int n = 100;//聲明流對象FileOutputStream fos = null;try{//創(chuàng)建流對象fos = new FileOutputStream("e:\\out.txt");//轉(zhuǎn)換為byte數(shù)組byte[] b1 = s.getBytes();//換行符byte[] b2 = "\r\n".getBytes();byte[] b3 = String.valueOf(n).getBytes();//依次寫入文件fos.write(b1);fos.write(b2);fos.write(b3);} catch (Exception e) {e.printStackTrace();}finally{try{fos.close();}catch(Exception e){}}} }

該示例代碼寫入的文件使用記事本打開以后,內(nèi)容為:

?????????????????? Java語言

100

?????????在該示例代碼中,演示了將一個字符串和一個int類型的值依次寫入到同一個文件中。在寫入文件時,首先創(chuàng)建了一個文件輸出流對象fos

?????????????????? fos = new FileOutputStream("e:\\out.txt");

?????????該對象創(chuàng)建以后,就實現(xiàn)了從流到外部數(shù)據(jù)源e:\out.txt的連接。說明:當(dāng)外部文件不存在時,系統(tǒng)會自動創(chuàng)建該文件,但是如果文件路徑中包含未創(chuàng)建的目錄時將出現(xiàn)異常。這里書寫的文件路徑可以是絕對路徑也可以是相對路徑。

?????????在 實際寫入文件時,有兩種寫入文件的方式:覆蓋和追加。其中“覆蓋”是指清除原文件的內(nèi)容,寫入新的內(nèi)容,默認(rèn)采用該種形式寫文件,“追加”是指在已有文件 的末尾寫入內(nèi)容,保留原來的文件內(nèi)容,例如寫日志文件時,一般采用追加。在實際使用時可以根據(jù)需要采用適合的形式,可以使用:

?????????????????? public FileOutputStream(String name, boolean append) throws FileNotFoundException

?????????只需要使用該構(gòu)造方法在構(gòu)造FileOutputStream對象時,將第二個參數(shù)append的值設(shè)置為true即可。

?????????流對象創(chuàng)建完成以后,就可以使用OutputStream中提供的wirte方法向流中依次寫入數(shù)據(jù)了。最基本的寫入方法只支持byte數(shù)組格式的數(shù)據(jù),所以如果需要將內(nèi)容寫入文件,則需要把對應(yīng)的內(nèi)容首先轉(zhuǎn)換為byte數(shù)組。

?????????這里以如下格式寫入數(shù)據(jù):首先寫入字符串s,使用String類的getBytes方法將該字符串轉(zhuǎn)換為byte數(shù)組,然后寫入字符串“\r\n”,轉(zhuǎn)換方式同上,該字符串的作用是實現(xiàn)文本文件的換行顯示,最后寫入int數(shù)據(jù)n,首先將n轉(zhuǎn)換為字符串,再轉(zhuǎn)換為byte數(shù)組。這種寫入數(shù)據(jù)的順序以及轉(zhuǎn)換為byte數(shù)組的方式就是流的數(shù)據(jù)格式,也就是該文件的格式。因為這里寫的都是文本文件,所以寫入的內(nèi)容以明文的形式顯示出來,也可以根據(jù)自己需要存儲的數(shù)據(jù)設(shè)定特定的文件格式。

?????????其實,所有的數(shù)據(jù)文件,包括圖片文件、聲音文件等等,都是以一定的數(shù)據(jù)格式存儲數(shù)據(jù)的,在保存該文件時,將需要保存的數(shù)據(jù)按照該文件的數(shù)據(jù)格式依次寫入即可,而在打開該文件時,將讀取到的數(shù)據(jù)按照該文件的格式解析成對應(yīng)的邏輯即可。

?????????最后,在數(shù)據(jù)寫入到流內(nèi)部以后,如果需要立即將寫入流內(nèi)部的數(shù)據(jù)強制輸出到外部的數(shù)據(jù)源,則可以使用流對象的flush方法實現(xiàn)。如果不需要強制輸出,則只需要在寫入結(jié)束以后,關(guān)閉流對象即可。在關(guān)閉流對象時,系統(tǒng)首先將流中未輸出到數(shù)據(jù)源中的數(shù)據(jù)強制輸出,然后再釋放該流對象占用的內(nèi)存空間。

?????????使用FileWriter寫入文件時,步驟和創(chuàng)建流對象的操作都和該示例代碼一致,只是在轉(zhuǎn)換數(shù)據(jù)時,需要將寫入的數(shù)據(jù)轉(zhuǎn)換為char數(shù)組,對于字符串來說,可以使用String中的toCharArray方法實現(xiàn)轉(zhuǎn)換,然后按照文件格式寫入數(shù)據(jù)即可。

?????????對于其它類型的字節(jié)輸出流/字符輸出流來說,只是在邏輯上連接不同的數(shù)據(jù)源,在創(chuàng)建對象的代碼上會存在一定的不同,但是一旦流對象創(chuàng)建完成以后,基本的寫入方法都是write方法,也需要首先將需要寫入的數(shù)據(jù)按照一定的格式轉(zhuǎn)換為對應(yīng)的byte數(shù)組/char數(shù)組,然后依次寫入即可。

?????????所以IO類的這種設(shè)計形式,只需要熟悉該體系中的某一個類的使用以后,就可以觸類旁通的學(xué)會其它相同類型的類的使用,從而簡化程序員的學(xué)習(xí),使得使用時保持統(tǒng)一。


總結(jié)

以上是生活随笔為你收集整理的File类 读取文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。