數(shù)據(jù)分成2大類翩活,一類字節(jié)數(shù)據(jù)阱洪,一類是字符數(shù)據(jù)。但是任何數(shù)據(jù)在底層都是以字節(jié)形式保存的隅茎。字節(jié)數(shù)據(jù)文件只能使用字節(jié)流來(lái)操作澄峰。字符數(shù)據(jù)文件可以使用字符流讀取,也可以使用字節(jié)流讀取辟犀。
字節(jié)數(shù)據(jù)文件:圖片俏竞,音頻,視頻堂竟,壓縮文件等
字符數(shù)據(jù)文件:以字節(jié)的形式表示的字符內(nèi)容的文件魂毁,都可以稱為字符文件。
我們生活中qq出嘹,微信使用的都是字符類型的數(shù)據(jù)來(lái)交流席楚,而中文都是兩個(gè)字節(jié)組成一個(gè)漢字,當(dāng)你將字符轉(zhuǎn)換成計(jì)算機(jī)識(shí)別的字節(jié)類型的數(shù)據(jù)時(shí)税稼,老美的英文字母烦秩,一個(gè)字母代表一個(gè)字節(jié)垮斯,可以根據(jù)acsii碼表翻譯成對(duì)應(yīng)的數(shù)據(jù)。而翻譯中文時(shí)就會(huì)造成亂碼只祠。
能夠識(shí)別中文的碼表 utf-8 unicode GBK GB2312兜蠕。
字符輸入流演示:
import java.io.FileReader;
import java.io.IOException;
public class IoDemo {
public static void main(String[] args) throws IOException {
FileReader f = new FileReader("e:/lishuai.txt");
int ch;
while ((ch = f.read()) != -1) {
System.out.print((char)ch);
}
f.close();
}
}
想要讀取文件中的字符數(shù)據(jù)就要使用字符輸入流對(duì)象FileReader讀取數(shù)據(jù)。當(dāng)使用字符流讀取數(shù)據(jù)的時(shí)候抛寝,其實(shí)在字符的底層使用的是字節(jié)流在讀取數(shù)據(jù)熊杨,只不過(guò)在讀取的時(shí)候,它會(huì)把讀取的數(shù)據(jù)返回到Read中的字節(jié)流緩沖區(qū) 這后把這些字節(jié)數(shù)據(jù)去查詢碼表中對(duì)應(yīng)的那個(gè)字符盗舰,然后把這個(gè)字符反給調(diào)用read的程序晶府。
字符流 = 字節(jié)流 + 編碼表
字符輸出流演示:
import java.io.FileWriter;
import java.io.IOException;
public class IoDemo {
public static void main(String[] args) throws IOException {
FileWriter f = new FileWriter("e:/lishuai.txt");
f.write(2015);
f.write("li李帥");
f.flush();
f.close();
}
}
這里要注意使用write方法寫(xiě)的時(shí)候,寫(xiě)入到緩沖區(qū)內(nèi)钻趋,要使用flush方法才能將緩沖區(qū)內(nèi)的數(shù)據(jù)存儲(chǔ)到硬盤中川陆。