FileOutputStreamfileOutputStream=newFileOutputStream("d:/text.txt");
OutputStreamWriteroutputStreamWriter=newOutputStreamWriter(fileOutputStream,"MS936");
BufferedWriterbufferedWriter=newBufferedWriter(outputStreamWriter);
如果只用FileOutputStreamfileOutputStream=newFileOutputStream("d:/text.txt");
不是也能輸出到"d:/text.txt"嗎?
為什么要用其它兩個(gè)呢?能起到什么作用呢?
FileOutputStream是字節(jié)流,它一個(gè)字節(jié)一個(gè)字節(jié)的向外邊送數(shù)據(jù)
OutputStreamWrite是字符流,它一個(gè)字符一個(gè)字符的向外邊送數(shù)據(jù)
它們有什么區(qū)別么?
解析:
因?yàn)橛?jì)算機(jī)是洋鬼子發(fā)明的,它們的英文字符占一個(gè)字節(jié),而我們的中文是一個(gè)字符,占倆字節(jié)。
如果用stream,你讀出來的英語再倒也罷了,讀出來的中文可就是亂碼或者一個(gè)個(gè)“????”。
如果你用WRITER,就不會有亂碼了,明白?
BufferedWriterBuffer是一個(gè)緩沖區(qū),為什么要用BUFFER呢?
如果你直接用stream或者writer,你的硬盤可能就是一個(gè)字符或者一個(gè)字節(jié)讀寫硬盤一次,
可是你用了Buffer,你的硬盤就是讀了一堆數(shù)據(jù)之后,讀寫一下硬盤。這樣對你硬盤有好處。
愛華網(wǎng)



