#1# IO流 ~ 1

1.IO流的基礎(chǔ) File

? ???implements Serializable,Comparable

? ? 1.基本定義 :

? ? ? ? ? ? ? ?IO包中唯一代表磁盤文件本身的對象

? ? 2.基本操作 【這里用文件來做例子瓤漏,而不是文件夾】

? ? ? ? ? ? ? step 1 : 定義一個File : File file = new File("temp.txt");?

? ? ? ? ? ? ? ? ? ? 注意這里只是定義了一個File的對象,文件還并沒有創(chuàng)建

? ? ? ? ? ? step 2 :創(chuàng)建File :

? ? ? ? ? if(!file.exists()){? ? ? ?//判斷文件是否存在

? ? ? ? ? ? ? ? file.createNewFile() ; //這里會拋出一個異常松忍,Try_Catch住

??????????}

? ? ? ? ? ? step 3 : 其它操作

#獲取相對路勁:file.getPath() =>temp.txt??

#獲取絕對路徑 :? file.getAbsolutePath() => C:/demo/temp.txt

注意 :

? ? 如果File file = new File("C:/demo/temp.txt"),那么通過以上兩個方法獲取的路徑就是一樣的

#文件的大小 : file.length();

#文件是否存在 : file.exists();

#刪除文件 : file.delete();

? ? ? ? 注意洞慎,如果file是一個文件夾创南,那么刪除是返回false 失敗的

#路徑分割符? File.separator

????????根據(jù)不同的操作系統(tǒng)取不同操作系統(tǒng)下的分隔符 在window是 “\”

? ? ? ? File.pathSeparator,在window下是“积蜻;”(分號)荐糜,這個得注意


2.字節(jié)流 : InputStream / OutputStream

? ? 1.字節(jié)輸入流 : InputStream implements Closeable

#? 讀取數(shù)據(jù)方法

read() : 如果下一個字節(jié)可讀取论咏,返回一個整形钓瞭,遇到文件末尾浊竟,返回-1

read(byte[])?

read(byte[] byte,int offset,int len)?

這三個read方法怨喘,在輸入數(shù)據(jù)可用,檢測到流末尾或者異常前振定,此方法都將一直阻塞

# 獲取可讀取的文字?jǐn)?shù) : InputStream # int available()?

? ? 2.字節(jié)輸出流 : OutputStream implements Closeable, Flushable

#構(gòu)造方法

FileoutputStream(String) ->FileOutputStream(String path必怜,boolean append);

如果傳入FileoutputStream中的File的文件不存在,那么會在new FileoutputStream(String path)的時候自動創(chuàng)建一個path對應(yīng)的File

#.寫入調(diào)用的API 流程 :

write(byte[]) ->write(byte[] byte,int offset,int byteLength)->write(int)

3.字符流 :Reader / Writer

#.tips : 獲取JDK環(huán)境變量的方法 :

? ? System.getProperties().list(System.out);

? ?查看 file.encoding = Xxx 屬性

#.字符編碼

?//使用GBK編碼的字節(jié)數(shù)組 后频,寫入和讀取的時候梳庆,盡量保持一致

? ? byte[] demo = "Java基礎(chǔ)".getBytes("GBK");?

? ? 1.字符輸入流 : Reader implements Readable, Closeable? ? ? ?

? ? 2.字符輸出流 : Writer implements Appendable, Closeable, Flushable?

4.增加 Buff : BufferedXxx?

? ??????為了達到最高的效率,避免頻繁地進行字符與字節(jié)之間的相互轉(zhuǎn)換卑惜,最好不要直接使用FileReader和FileWriter這兩個類進行讀寫靠益,而使用BufferedWriter包裝OutputStreamWriter,使用BufferedReader包裝InputStreamReader残揉。

注意 :?

? ??1胧后、利用BufferedWriter進行寫操作,寫入的內(nèi)容會放在緩沖區(qū)內(nèi)抱环,直到遇到close()壳快、flush()的時候才會將內(nèi)容一次性寫入文件。另外注意close()的順序镇草,一定要先關(guān)閉BufferedWriter眶痰,再關(guān)閉Writer,不可以倒過來梯啤,因為BufferedWriter的寫操作是通過Writer的write方法寫的竖伯,如果先關(guān)閉Writer的話,就無法將緩沖區(qū)內(nèi)的數(shù)據(jù)寫入文件了因宇,會拋出異常

2七婴、利用BufferedReader進行讀操作,不可以用父類Reader指向它察滑,因為readLine()這個方法是BufferedReader獨有的打厘,readLine()的作用是逐行讀取文件中的內(nèi)容

5.總結(jié)

1.字節(jié)流和字符流的區(qū)別:

? ? ? ? API : 字節(jié)流中write ()是byte[] 或者int , 字符流中確實 char[]

? ? ? ? 本質(zhì): 字節(jié)流直接操作文件贺辰,針對的是單個字節(jié)的操作户盯,而字符是通過StreamDecoder把InputStream讀取數(shù)據(jù)到內(nèi)存中字節(jié)進行解碼成字符嵌施,然后再刷入到指定文件的,所以字符流針對的是字符(2* byte)? ??

2.字符流和添加了BufferedXxx的對應(yīng)字符流莽鸭,都是用到內(nèi)存緩存吗伤,這兩者的區(qū)別?

? ? 首先硫眨,添加BufferedReader之類的作用為了避免FileReader頻繁的字節(jié)轉(zhuǎn)字符的操作

? ? 其次足淆,同樣具有內(nèi)存緩存,區(qū)別就在于捺球,F(xiàn)ileWriter之類的是每次或取數(shù)據(jù)都是字節(jié)先轉(zhuǎn)字符后到內(nèi)存缸浦,而BufferedWriter確實直接先讀到內(nèi)存,滿了之后或者調(diào)用Flush氮兵,再調(diào)用FileWriter把緩存中的數(shù)據(jù)寫入

3.字節(jié)流轉(zhuǎn)字符流

? ? new BufferedReader(new InputSteamReader(new FileInputStream(new File("temp.txt")));

? ? 此外,outputStreamWriter 和 InputStreamReader 的都有主動設(shè)置Charset的構(gòu)造方法

6.一些其它的流 : Other流

對象流 : ObjectOutputStream / ObjectInputStream

DataInputStream / DataOutputStream

RandomAccessFile


*感謝*

五月倉頡 :?https://www.cnblogs.com/xrq730/p/4886636.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裂逐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泣栈,更是在濱河造成了極大的恐慌卜高,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件南片,死亡現(xiàn)場離奇詭異掺涛,居然都是意外死亡,警方通過查閱死者的電腦和手機疼进,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門薪缆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伞广,你說我怎么就攤上這事拣帽。” “怎么了嚼锄?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵减拭,是天一觀的道長。 經(jīng)常有香客問我区丑,道長拧粪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任沧侥,我火速辦了婚禮可霎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘正什。我一直安慰自己啥纸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布婴氮。 她就那樣靜靜地躺著斯棒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪主经。 梳的紋絲不亂的頭發(fā)上荣暮,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音罩驻,去河邊找鬼穗酥。 笑死,一個胖子當(dāng)著我的面吹牛惠遏,可吹牛的內(nèi)容都是我干的砾跃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼节吮,長吁一口氣:“原來是場噩夢啊……” “哼抽高!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起透绩,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤翘骂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后帚豪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碳竟,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年狸臣,在試婚紗的時候發(fā)現(xiàn)自己被綠了莹桅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡烛亦,死狀恐怖诈泼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情此洲,我是刑警寧澤厂汗,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站呜师,受9級特大地震影響娶桦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汁汗,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一衷畦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧知牌,春花似錦祈争、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忿墅。三九已至,卻和暖如春沮峡,著一層夾襖步出監(jiān)牢的瞬間疚脐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工邢疙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棍弄,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓疟游,卻偏偏與公主長得像呼畸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子颁虐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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

  • 一蛮原、基礎(chǔ)知識:1、JVM聪廉、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機...
    殺小賊閱讀 2,365評論 0 4
  • 五瞬痘、IO流 1、IO流概述 (1)用來處理設(shè)備(硬盤板熊,控制臺框全,內(nèi)存)間的數(shù)據(jù)。(2)java中對數(shù)據(jù)的操作都是通過...
    佘大將軍閱讀 503評論 0 0
  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序運行的過程中干签,可能需要對一些設(shè)備進...
    征程_Journey閱讀 948評論 0 1
  • 1 I/O流的概念津辩,分類2 I/O所有類的結(jié)構(gòu)圖及詳解3 何為NIO,和傳統(tǒng)I/O有何區(qū)別4 在開發(fā)中正確使用I/...
    艾剪疏閱讀 486評論 0 2
  • 我相信大家在學(xué)習(xí)日語的過程中蚜印,隨著學(xué)習(xí)的不斷深入,我們會發(fā)現(xiàn)日語中的一個字在不同的語境中會有不同的讀音留量,我之前聽我...
    光醬語言研究所閱讀 224評論 0 4