I/O流,就是用來讀寫數(shù)據(jù)的,也稱為輸入,輸出流
目錄
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出長寧免費(fèi)做網(wǎng)站回饋大家。1.I/O流的簡介
2.I/O流的分類
3.I/O流體系
4.文件字節(jié)輸入流 FileInputStream--讀取文件數(shù)據(jù)
5.文件字節(jié)輸出流OutPutStream--寫數(shù)據(jù)到文件
6.兩種資源釋放操作
7.字符輸入流Reader
8.字符輸出流Write
9.字節(jié)流字符流如何選擇
I表示input,把硬盤文件中的數(shù)據(jù)讀入到內(nèi)存中的過程,稱之為輸入,負(fù)責(zé)讀。
O表示output,把內(nèi)存的數(shù)據(jù)寫入硬盤的過程,為輸出,負(fù)責(zé)寫。
2.I/O流的分類3.I/O流體系1.按照流的方向:可以分為輸入流,輸出流
2.按照流中數(shù)據(jù)的最小單位:分為字符流和字節(jié)流
?????????????字符流 | ?????????????字節(jié)流 | ||
Writer | Reader | InputStream | OutputStream |
字符輸入 | 字符輸出 | 字節(jié)輸入 | 字節(jié)輸出 |
I/O流體系因?yàn)槭浅橄?,所以不能直接用,需要用他們的子類?/p>4.文件字節(jié)輸入流 FileInputStream--讀取文件數(shù)據(jù)
FileInputStream是字節(jié)輸入流inputStream的子類
FileInputStream的作用:以內(nèi)存為基準(zhǔn),把磁盤文件中的數(shù)據(jù)以字節(jié)的形式讀取到內(nèi)存中去。
使用
InputStream is = new FileInputStream("文件路徑");
方法
read():每次讀取一個字節(jié),讀取完畢后返回-1;
read(byte[] buffer):每次讀取一個數(shù)組,沒有數(shù)組可讀返回-1。
當(dāng)讀取中文的時候,可能會出現(xiàn)亂碼。這時候該如何解決呢?
解決:定義一個與文件一樣大的字節(jié)數(shù)組,一次性讀取完文件的全部字節(jié)。
File f=new File("文件路經(jīng)");
InputStream is=new FileInputStream(f);
byte[] buffer=new byte[(int)f.length()];
int len= is.read(buffer);
System.out.println("讀取了"+len);
System.out.println("文件大小"+f.length());
System.out.println(new String(buffer));
在java也提供了相應(yīng)的方法 ---readAllBytes()
byte[] buffer= is.readAllBytes();
System.out.println(new String(buffer));
5.文件字節(jié)輸出流OutPutStream--寫數(shù)據(jù)到文件public static void main(String[] args) throws Exception {
OutputStream outputStream =new FileOutputStream("D:\\java\\itheima\\file-io-app\\src\\out01.txt");
//向新創(chuàng)建的文件中添加數(shù)據(jù)
outputStream.write('a');
outputStream.write(97);
//outputStream.write('茲');//漢字會出現(xiàn)亂碼
//向文件中添加漢字內(nèi)容
byte[] b="加油年輕人".getBytes();
outputStream.write(b);
outputStream.flush();//刷新數(shù)據(jù),可以繼續(xù)使用
outputStream.close();//釋放資源,包含刷新數(shù)據(jù),close后不能使用
}
文件輸出
6.兩種資源釋放操作1.手動釋放
try{
可能會出現(xiàn)異常的代碼
}
catch(異常類名 變量名? ){
異常執(zhí)行的操作
}
finally{
執(zhí)行資源釋放操作
}
2.自動釋放
自動釋放有兩種,分別是JDK7和JDK9提供的。
這是JDK7,這種比較常用。
try(定義流對象){
可能會出現(xiàn)異常的代碼
}
catch{
異常處理代碼
}
7.字符輸入流ReaderJDK9:
定義輸入流對象
定義輸出流對象
try(輸入流對象;輸出流對象){
可能會出現(xiàn)異常的代碼
}
catch{
異常處理代碼
}
更方便的讀取漢字
Reader re=new FileReader("D:\\java\\itheima\\file-io-app\\src\\data02.txt");
int code;
while ((code=re.read()) != -1){//當(dāng)返回-1的時候不在讀取
System.out.print((char) code);
}
8.字符輸出流Write向文件中寫入數(shù)據(jù)
Writer re=new FileWriter("目標(biāo)文件");
re.write('a');
re.write("dadadd");
char[] a="我愛學(xué)習(xí)".toCharArray();
re.write(a,0,3);
re.close();
9.字節(jié)流字符流如何選擇字節(jié)流適合做一切文件數(shù)據(jù)的拷貝(音視頻,文本)
字節(jié)流不適合讀取中文內(nèi)容
字符流適合做文本文件的操作
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧