java的i/o恐怕是java體系里最復(fù)雜的內(nèi)容之一了,有時候這個之一可以去了。不像c語言一個fopen()就可以解決一大堆問題。到了java
呢,又是stream又是reader,讀一個文件的方式不下十種,造成很多人因此而放棄了java,當(dāng)初剛學(xué)java的時候班里很多人都對java有很
高的熱情,可到了現(xiàn)在,不知道還有多少人堅(jiān)持下來了。具有諷刺意味的事java
i/o的設(shè)計(jì)者的初衷是讓i/o變得簡單一點(diǎn),哪知道若干年后,弄出這么一大攤子來。現(xiàn)在又加了一個nio----就是newio,不知道日后還會弄出什
么東西來。
用i/o可以解決文件,網(wǎng)絡(luò)通訊等幾乎所io問題。功能強(qiáng)大,唯一的缺點(diǎn)就是復(fù)雜。但仔細(xì)一分析,還是有門路可走的。整個io體系主要分為兩大門派。一派
為流類也就是用于字節(jié)的InputStream和OutputStream,另一派為用于字符的Reader和Writer派(簡稱rw派)。認(rèn)清了這兩
派就知道*Stream的東東全都是流派的,不是繼承而來就是通過實(shí)現(xiàn)接口而來。如此,*Reader,*Writer那就是出身于rw派了。還有一個
File派來處理文件創(chuàng)建,刪除,修改,屬性問題。對文件的內(nèi)容進(jìn)行操作不是他的工作。搞清楚這兩大派一小派那么解決io指日可待。
那么說了這么多怎么創(chuàng)建文件呢?舉例說明(主函數(shù)就不寫了)
File newfile = new File("text.txt");
newfile.createNewFile();
這樣就在同一個文件夾下創(chuàng)建了一個名為text.txt的文本文件,那枚怎么刪除呢?
File newfile = new File("text.txt");
newfile.delete();
這樣就把這個文件刪除了。是不是很簡單呢。那么怎么把文件寫入這個文本文件呢?
File writetext = new File("text.txt");
[readtext.createNewFile();]//可有可無,因?yàn)槲募淮嬖诘脑挘瑫詣觿?chuàng)建
FileWriter fw = new FileWriter(writetext);//就像創(chuàng)建打印機(jī)
PrintWriter pw = new PrintWriter(fw);//這個呢打印針頭了。
FileWriter fw = new FileWriter(writetext);//就像創(chuàng)建打印機(jī)
PrintWriter pw = new PrintWriter(fw);//這個呢打印針頭了。
pw.println("this is a new file for
read");//這個是說,把這些東西給我寫進(jìn)去吧
fw.close();//然后關(guān)閉打印機(jī)
有點(diǎn)復(fù)雜,當(dāng)懂了以后,也就感覺不到什么了,那么如何讀取這個文本文件呢?
File readtext = new File("text.txt");
FileReader fr = new FileReaer(readtext);//創(chuàng)建一個掃描儀
BufferedReader br = new
BufferedReader(fr);//這是掃描儀內(nèi)的緩存
String content =
br.readLine(); //讀一行文本
用熟練了之后可以這么寫:
BufferedReader in = new BufferedReader(new
FileReader("text.txt");
String content="";
while((content=in.readLine())!=null){
System.out.println(content);//讀一行輸出一行
}