大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java文件輸入輸出流,初學(xué)者的基礎(chǔ)學(xué)習(xí)

Java文件輸入輸出流,初學(xué)者的基礎(chǔ)學(xué)習(xí)

更新時(shí)間:2020-08-26 15:47:29 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2238次

在A(yíng)ndroid開(kāi)發(fā)中,文件操作還是比較頻繁的,本文主要記錄下文件的加載,寫(xiě)入等相關(guān)操作的使用。

流的分類(lèi)

在Java程序中操作文件,都是以流的形式來(lái)操作

首先按照流向可以分為輸入流與輸出流兩種,這里的輸入輸出是站在內(nèi)存的角度而言的,流向內(nèi)存的為輸入流,流出內(nèi)存的為輸出流

按照傳輸?shù)膯挝豢梢苑譃樽止?jié)流與字符流,字節(jié)流傳輸?shù)氖嵌M(jìn)制字節(jié),可操作任何類(lèi)型的文件,字符流傳輸?shù)氖亲址荒苡脕?lái)讀取文本文件

字節(jié)流

字節(jié)流有兩個(gè)抽象的父類(lèi),InputStram和outputStream,本文主要記錄文件的操作,其他的具體實(shí)現(xiàn)類(lèi)暫不討論,主要看一下經(jīng)常使用的幾個(gè)字節(jié)流實(shí)現(xiàn)類(lèi)的使用。

針對(duì)文件操作的字節(jié)流主要包括FileInputStream與FileOutputStream

向磁盤(pán)寫(xiě)入文件    

?File?destFile?=?new?File(filePath);
????????????FileOutputStream?fileOutputStream?=?new?FileOutputStream(destFile);
????????????fileOutputStream.write(content.getBytes());
????????????fileOutputStream.close();

寫(xiě)入文件比較簡(jiǎn)單,傳入一個(gè)File對(duì)象構(gòu)造FileOutputStream的對(duì)象,然后調(diào)用write方法即可,最后一定要調(diào)用close,釋放資源

從磁盤(pán)讀取文件     

FileInputStream?fileInputStream?=?new?FileInputStream(file);
????????????byte[]?bytes?=?new?byte[1024];
????????????int?i;
????????????while((i=fileInputStream.read(bytes))!=-1){
????????????????stringBuilder.append(new?String(bytes,0,i));
????????????}
????????????Log.i(TAG,?stringBuilder.toString());
????????????fileInputStream.close();

相對(duì)于從磁盤(pán)讀入內(nèi)存,讀取文件多了幾行代碼,但也很好理解。需要聲明一個(gè)byte類(lèi)型的數(shù)組,用于每次讀取時(shí)將數(shù)據(jù)存入該數(shù)組,聲明一個(gè)整型i用于保存一次讀取到的字節(jié)數(shù)。最后再根據(jù)將字節(jié)數(shù)組轉(zhuǎn)換成需要的類(lèi)型,最后也需要調(diào)用close釋放資源

緩沖流

緩沖流相對(duì)于上述的字節(jié)流字符流并不是一個(gè)層面的東西,它并不具備直接操作文件的能力,而是要基于上述的字節(jié)流和字符流為基礎(chǔ)。之所以要設(shè)計(jì)緩沖流這個(gè)東西,是為了提高讀寫(xiě)效率,因?yàn)榫彌_是利用了將數(shù)據(jù)先緩存起來(lái),然后再一起寫(xiě)入或讀出,避免頻繁的磁盤(pán)IO操作,提高讀寫(xiě)速度。

針對(duì)字節(jié)流的緩沖流類(lèi)有BufferedoutputStream和BufferedInputStream,實(shí)際這兩個(gè)類(lèi)的設(shè)計(jì)利用了裝飾者模式,利用它可以把FileInputStream與FileOutputStream給包起來(lái),然后操作文件

向磁盤(pán)寫(xiě)入文件

	????FileOutputStream?fileOutputStream?=?new?FileOutputStream(destFile);
????????????BufferedOutputStream?bufferedOutputStream?=?new?BufferedOutputStream(fileOutputStream);
????????????bufferedOutputStream.write(content.getBytes());
????????????bufferedOutputStream.flush();
????????????bufferedOutputStream.close();

使用的邏輯和FileInputStream差不多,只是包了一層,最后還調(diào)用了flush,用于刷新,相當(dāng)于向磁盤(pán)寫(xiě)入一次

從磁盤(pán)讀取文件    

?FileInputStream?fileInputStream?=?new?FileInputStream(file);
????????????BufferedInputStream?bufferedInputStream?=?new?BufferedInputStream(fileInputStream);
????????????byte[]?bytes?=?new?byte[1024];
????????????int?i;
????????????while((i=bufferedInputStream.read(bytes))!=-1){
?????????????????stringBuilder.append(new?String(bytes,0,i));
????????????}
????????????fileInputStream.close();
????????????bufferedInputStream.close();

使用方式與FileOutputStream也差不多,只是用BufferedInputStream把他包了起來(lái)

字符流

字符流主要包括FileWriter和FileReader,字符緩沖流BufferedWriter,BufferedReader,用法與上述的字節(jié)流基本一致,只不過(guò)調(diào)用read之后獲取到的是字符類(lèi)型,需要用char類(lèi)型的數(shù)組去接收     

FileReader?fileReader?=?new?FileReader(file);
????????????BufferedReader?bufferedReader?=?new?BufferedReader(fileReader);
????????????char[]?chars?=?new?char[1024];
????????????int?charInt;
????????????while?((charInt?=?bufferedReader.read(chars))!=-1){
????????????????Log.i(TAG,"char:"+new?String(chars,0,charInt));
????????????????stringBuilder.append(new?String(chars,0,charInt));
????????????}
????????????Log.i(TAG,"stringResult?:?"+stringBuilder.toString());
????????????fileReader.close();
????????????bufferedReader.close();

另外在BufferedReader中還提供了readLine方法,按行讀取文本文件    

?FileReader?fileReader?=?new?FileReader(file);
????????????BufferedReader?bufferedReader?=?new?BufferedReader(fileReader);
????????????String?s;
????????????while?((s=bufferedReader.readLine())!=null){
????????????????stringBuilder.append(s);
????????????}
????????????Log.i(TAG,"stringResult?:?"+stringBuilder.toString());
????????????fileReader.close();
????????????bufferedReader.close();

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java文件輸入輸出流,初學(xué)者的基礎(chǔ)學(xué)習(xí)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 成人久久精品一区二区三区 | 一级片免费在线 | 久久久久中文字幕 | 亚洲午夜片子大全精品 | 中文一级国产特级毛片视频 | 色六月丁香 | 最新狠狠色狠狠色综合 | 爱操综合网 | 狠狠色狠狠色综合网 | 亚洲一区二区影院 | 日韩在线色| 俄罗斯午夜影院 | 日本成人一区二区 | 成人毛片免费观看视频在线 | 久久伊人色综合 | 一级毛片特级毛片免费的 | 伊人色色网 | 玖玖99视频 | 欧美国产影院 | 国产精品亚洲综合色拍 | 亚洲视频二区 | 在线视频一区二区日韩国产 | 国产精品九九九久久九九 | 荔枝污| 亚洲一区二区三区在线网站 | 四虎精品免费久久 | 免费观看黄色小视频 | 在线观看偷拍视频一区 | 日韩在线看片 | 日本一二三区免费 | 尹人久久久香蕉精品 | 亚洲福利视频一区二区三区 | 欧美性猛交xxxx免费看手交 | 国产精品日韩欧美久久综合 | 99精品国产自在现线观看 | 精品日韩 | 欧美亚洲精品在线 | 亚欧中文字幕 | 日本性网址 | 奇米影视第四色在线 | 四虎新地址4hu 你懂的 |