字節(jié)流:inputstream,outputstream
字符流:Reader说订,Writer
* 字符流中的對(duì)象融合了編碼表,也就是系統(tǒng)默認(rèn)的編碼表陶冷。我們的系統(tǒng)一般都是GBK編碼钙姊。
* 字符流只用來(lái)處理文本數(shù)據(jù),字節(jié)流用來(lái)處理媒體數(shù)據(jù)埂伦。
* 數(shù)據(jù)最常見(jiàn)的表現(xiàn)方式是文件煞额,字符流用于操作文件的子類一般是FileReader和FileWriter。
注意事項(xiàng):
* 寫(xiě)入文件后必須要用flush()刷新。
* 用完流后記得要關(guān)閉流
* 使用流對(duì)象要拋出IO異常
*?定義文件路徑時(shí)膊毁,可以用“/”或者“\\”胀莹。
*?在創(chuàng)建一個(gè)文件時(shí),如果目錄下有同名文件將被覆蓋媚媒。
*?在讀取文件時(shí)嗜逻,必須保證該文件已存在,否則出異常
示例1:在硬盤上創(chuàng)建一個(gè)文件,并寫(xiě)入一些文字?jǐn)?shù)據(jù)
//flush和close的區(qū)別:flush刷新后可以繼續(xù)輸入缭召,close刷新后不能繼續(xù)輸入栈顷。?
class?FireWriterDemo?{??
publicstaticvoid?main(String[]?args)throws?IOException?{//需要對(duì)IO異常進(jìn)行處理???
//創(chuàng)建一個(gè)FileWriter對(duì)象,該對(duì)象一被初始化就必須要明確被操作的文件嵌巷。??
//而且該文件會(huì)被創(chuàng)建到指定目錄下萄凤。如果該目錄有同名文件,那么該文件將被覆蓋搪哪。 ?
FileWriter?fw?=new?FileWriter("F:\\1.txt");//目的是明確數(shù)據(jù)要存放的目的地靡努。 ?
//調(diào)用write的方法將字符串寫(xiě)到流中??
fw.write("hello?world!"); ?
//刷新流對(duì)象緩沖中的數(shù)據(jù),將數(shù)據(jù)刷到目的地中??
????????fw.flush();??
//關(guān)閉流資源晓折,但是關(guān)閉之前會(huì)刷新一次內(nèi)部緩沖中的數(shù)據(jù)惑朦。當(dāng)我們結(jié)束輸入時(shí)候,必須close();??
fw.write("first_test");??
????????fw.close();??
//flush和close的區(qū)別:flush刷新后可以繼續(xù)輸入漓概,close刷新后不能繼續(xù)輸入漾月。??
????}??
}??
示例2:FileReader的reade()方法.
要求:用單個(gè)字符和字符數(shù)組進(jìn)行分別讀取
class?FileReaderDemo?{??
publicstaticvoid?main(String[]?args)?{??
????????characters();??
????}??
/*****************字符數(shù)組進(jìn)行讀取*********************/??
privatestaticvoid?characters()?{??
try?{??
FileReader?fr?=new?FileReader("Demo.txt");??
char?[]??buf?=newchar[6];???
//將Denmo中的文件讀取到buf數(shù)組中。??
int?num?=0;??????
while((num?=?fr.read(buf))!=-1)?{??
//String(char[]?value?,?int?offest,int?count)?分配一個(gè)新的String,包含從offest開(kāi)始的count個(gè)字符??
sop(new?String(buf,0,num));??
????????????}??
sop('\n');??
????????????fr.close();??
????????}??
catch?(IOException?e)?{??
????????????sop(e.toString());??
????????}??
????}??