版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、day10【字節(jié)流、字符流】主要內(nèi)容字節(jié)流字符流異常處理Properties教學(xué)目標能夠使用字節(jié)輸入流數(shù)據(jù)到程序能夠理解數(shù)據(jù)(byte)的原理能夠使用字節(jié)流完成文件的能夠使用FileWirter寫數(shù)據(jù)到文件能夠說出FileWriter中關(guān)閉和刷新能夠使用FileWriter寫數(shù)據(jù)的5個的區(qū)別能夠使用FileWriter寫數(shù)據(jù)實現(xiàn)換行和追加寫能夠使用File能夠使用Fileer讀數(shù)據(jù)er讀數(shù)據(jù)一次一個字符數(shù)組能夠使用Properties的load第一章 字節(jié)流加載文件中配置1.1 字節(jié)輸入流【InputStream】java.io.InputStream 抽象類是表示字節(jié)輸入流的所有類的超類,可
2、以字節(jié)到內(nèi)存中。它定義了字節(jié)輸入流的基本共性功能。此輸入流并: 從輸入流: 從輸入流中與此流相關(guān)聯(lián)的任何系統(tǒng)資源。數(shù)據(jù)的下一個字節(jié)。一些字節(jié)數(shù),并將它們到字節(jié)數(shù)組 b中 。小貼士:1.2 FileInputStream類java.io.FileInputStream 類是文件輸入流,從文件中字節(jié)。構(gòu)造市昌平區(qū)建材城西路龍辦公樓一層:public void():關(guān)閉public abstract int()public int(byte b) FileInputStream(File file) : 通過打開與實際文件的連接來創(chuàng)建一個 FileInputStream ,該文件由文件系統(tǒng)中的 Fi
3、le對象 le命名。 FileInputStream(String name) : 通過打開與實際文件的連接來創(chuàng)建一個 FileInputStream ,該文件由文件系統(tǒng)中的路徑名 name命名。當你創(chuàng)建一個流對象時,必須傳入一個文件路徑。該路徑下,如果沒有該文件,會拋出 FileNotFoundException 。構(gòu)造舉例,代碼如下:字節(jié)數(shù)據(jù)1. 字節(jié): ,每次可以 一個字節(jié)的數(shù)據(jù),提升為int類型, 到文件末尾,返回 -1 ,代碼使用演示:public class FIS public static void main(String args) throws IOException/ 使
4、用文件名稱創(chuàng)建流對象FileInputStream fis = new FileInputStream( .txt);/ 數(shù)據(jù),返回一個字節(jié)int = fis. ();System.out.println(char) );= fis. ();System.out.println(char) );= fis. ();System.out.println(char) );= fis. ();System.out.println(char) );= fis. ();System.out.println(char) );/ 到末尾,返回1= fis. ();System.out.println( );
5、/ 關(guān)閉資源fis. ();輸出結(jié)果:a b cd市昌平區(qū)建材城西路 龍辦公樓一層 :public class FileInputStreamConstructor throws IOException public static void main(String args) / 使用File對象創(chuàng)建流對象File file = new File(a.txt);FileInputStream fos = new FileInputStream(file);/ 使用文件名稱創(chuàng)建流對象FileInputStream fos = new FileInputStream(b.txt);循環(huán)改進 方式,
6、代碼使用演示:public class FIS public static void main(String args) throws IOException/ 使用文件名稱創(chuàng)建流對象FileInputStream fis = new FileInputStream( .txt);/ 定義變量,保存數(shù)據(jù)int b ;/ 循環(huán)while (b = fis. ()!=1) System.out.println(char)b);/ 關(guān)閉資源fis. ();輸出結(jié)果:a b c d e小貼士:1. 雖然 了一個字節(jié),但是會自動提升為int類型。2. 流操作完畢后,必須 系統(tǒng)資源,調(diào)用 ,2. 使用字節(jié)
7、數(shù)組 : (byte b) ,每次 b的長度個字節(jié)到數(shù)組中,返回 到的有效字節(jié)個數(shù),讀取到末尾時,返回 -1 ,代碼使用演示:public class FIS public static void main(String args) throws IOException/ 使用文件名稱創(chuàng)建流對象.FileInputStream fis = new FileInputStream( .txt); / 文件中為abcde/ 定義變量,作為有效個數(shù)int len ;/ 定義字節(jié)數(shù)組,作為裝字節(jié)數(shù)據(jù)的容器byte b = new byte2;/ 循環(huán)while ( len= fis. (b)!=1)
8、/ 每次 后,把數(shù)組變成字符串打印System.out.println(new String(b);/ 關(guān)閉資源fis. ();輸出結(jié)果:市昌平區(qū)建材城西路 龍辦公樓一層 :e1錯誤數(shù)據(jù) d ,是由于最后一次 時,只 一個字節(jié) e ,數(shù)組中,上次 的數(shù)據(jù)沒有被完全替換,所以要通過 len ,獲取有效的字節(jié),代碼使用演示:public class FIS public static void main(String args) throws IOException/ 使用文件名稱創(chuàng)建流對象.FileInputStream fis = new FileInputStream( .txt); / 文
9、件中為abcde/ 定義變量,作為有效個數(shù)int len ;/ 定義字節(jié)數(shù)組,作為裝字節(jié)數(shù)據(jù)的容器byte b = new byte2;/ 循環(huán)while ( len= fis. (b)!=1) / 每次 后,把數(shù)組的有效字節(jié)部分,變成字符串打印System.out.println(new String(b,0,len);/ len 每次 的有效字節(jié)個數(shù)/ 關(guān)閉資源fis. ();輸出結(jié)果:ab cd e小貼士:使用數(shù)組 ,每次 多個字節(jié),減少了系統(tǒng)間的IO操作次數(shù),從而提高了讀寫的效率,建議開發(fā)中使用。1.3 字節(jié)流練習(xí):圖片原理圖解市昌平區(qū)建材城西路 龍辦公樓一層 :ab cd ed案例實
10、現(xiàn)圖片文件,代碼使用演示:小貼士:流的關(guān)閉原則:先開后關(guān),后開先關(guān)。第二章 字符流市昌平區(qū)建材城西路 龍辦公樓一層 :public class Copy public static void main(String args) throws IOException / 1.創(chuàng)建流對象/ 1.1 指定數(shù)據(jù)源FileInputStream fis = new FileInputStream(D:test.jpg);/ 1.2 指定目的地FileOutputStream fos = new FileOutputStream(test_copy.jpg);/ 2.讀寫數(shù)據(jù)/ 2.1 定義數(shù)組byte
11、b = new byte1024;/ 2.2 定義長度int len;/ 2.3 循環(huán)while (len = fis. (b)!=1) / 2.4 寫出數(shù)據(jù)fos.write(b, 0 , len);/ 3.關(guān)閉資源fos. ();fis. ();當使用字節(jié)流 文本文件時,可能會有一個小問題。就是遇到中文字符時,可能 顯示完整的字符,那是因為一個中文字符可能占用多個字節(jié) 。所以Java提 字符流類,以字符為 讀寫數(shù)據(jù),專門用于處理文本文件。2.1 字符輸入流【 er】java.io. er 抽象類是表示用于 字符流的所有類的超類,可以 字符 到內(nèi)存中。它定義了字符輸入流的基本共性功能 。pu
12、blic void () :關(guān)閉此流并 與此流相關(guān)聯(lián)的任何系統(tǒng)資源。public int () : 從輸入流 一個字符。public int (char cbuf) : 從輸入流中 一些字符,并將它們 到字符數(shù)組 cbuf中 。2.2 File er類java.io.File er 類是 字符文件的便利類。構(gòu)造時使用系統(tǒng)默認的字符編碼和默認字節(jié)緩沖區(qū)。小貼士:1. 字符編碼:字節(jié)與字符的對應(yīng)規(guī)則。Windows系統(tǒng)的中文編碼默認是GBK編碼表。idea中UTF-82. 字節(jié)緩沖區(qū):一個字節(jié)數(shù)組,用來臨時 字節(jié)數(shù)據(jù)。構(gòu)造File er(File file) : 創(chuàng)建一個新的 File er ,給
13、定要 的File對象。File er(String fileName) : 創(chuàng)建一個新的 File er ,給定要 的文件的名稱。當你創(chuàng)建一個流對象時,必須傳入一個文件路徑。類似于FileInputStream 。構(gòu)造舉例,代碼如下:public class File erConstructor throws IOException public static void main(String args) / 使用File對象創(chuàng)建流對象File file = new File(a.txt);File er fr = new File er(file);/ 使用文件名稱創(chuàng)建流對象File er
14、fr = new File er(b.txt);字符數(shù)據(jù)1. 字符:取,代碼使用演示:,每次可以 一個字符的數(shù)據(jù),提升為int類型, 到文件末尾,返回 -1 ,循環(huán)讀public class FR public static void main(String args) throws IOException / 使用文件名稱創(chuàng)建流對象市昌平區(qū)建材城西路 龍辦公樓一層 :File er fr = new File er( .txt);/ 定義變量,保存數(shù)據(jù)int b ;/ 循環(huán)while (b = fr. ()!=1) System.out.println(char)b);/ 關(guān)閉資源fr. (
15、);輸出結(jié)果: 黑馬程序員小貼士:雖然 了一個字符,但是會自動提升為int類型。2. 使用字符數(shù)組 : (char cbuf) ,每次 b的長度個字符到數(shù)組中,返回 到的有效字符個數(shù), 到末尾時,返回 -1 ,代碼使用演示:獲取有效的字符改進,代碼使用演示:市昌平區(qū)建材城西路 龍辦公樓一層 :public class FIS public static void main(String args) throws IOException / 使用文件名稱創(chuàng)建流對象File er fr = new File er( .txt);/ 定義變量,保存有效字符個數(shù)int len ;public clas
16、s FR public static void main(String args) throws IOException / 使用文件名稱創(chuàng)建流對象File er fr = new File er( .txt);/ 定義變量,保存有效字符個數(shù)int len ;/ 定義字符數(shù)組,作為裝字符數(shù)據(jù)的容器char cbuf = new char2;/ 循環(huán)while (len = fr. (cbuf)!=1) System.out.println(new String(cbuf);/ 關(guān)閉資源fr. ();輸出結(jié)果:程序員序2.3 字符輸出流【W(wǎng)riter】 java.io.Writer 抽象類是表示
17、用于寫出字符流的所有類的超類,將指定的字符 寫出到目的地。它定義了字節(jié)輸出流的基本共性功能 。public abstract void () :關(guān)閉此輸出流并 與此流相關(guān)聯(lián)的任何系統(tǒng)資源。 public abstract void flush() :刷新此輸出流并強制任何緩沖的輸出字符被寫出。 public void write(int c) :寫出一個字符。 public void write(char cbuf) :將 b.length字符從指定的字符數(shù)組寫出此輸出流。 public abstract void write(char b, int off, int len) :從指定的字符
18、數(shù)組寫出 len字符,從偏移量o開始輸出到此輸出流。 public void write(String str) :寫出一個字符串。2.4 FileWriter類 java.io.FileWriter 類是寫出字符到文件的便利類。構(gòu)造時使用系統(tǒng)默認的字符編碼和默認字節(jié)緩沖區(qū)。構(gòu)造 FileWriter(File file) : 創(chuàng)建一個新的 FileWriter,給定要 的File對象。 FileWriter(String fileName) : 創(chuàng)建一個新的 FileWriter,給定要 的文件的名稱。當你創(chuàng)建一個流對象時,必須傳入一個文件路徑,類似于FileOutputStream。構(gòu)造舉
19、例,代碼如下:市昌平區(qū)建材城西路 龍辦公樓一層 :/ 定義字符數(shù)組,作為裝字符數(shù)據(jù)的容器char cbuf = new char2;/ 循環(huán)while (len = fr. (cbuf)!=1) System.out.println(new String(cbuf,0,len);/ 關(guān)閉資源fr. ();輸出結(jié)果: 程序員基本寫出數(shù)據(jù)寫出字符: write(int b) ,每次可以寫出一個字符數(shù)據(jù),代碼使用演示:小貼士:1. 雖然參數(shù)為int類型四個字節(jié),但是只會保留一個字符的 寫出。2. 未調(diào)用關(guān)閉和刷新因為內(nèi)置緩沖區(qū)的 ,如果不關(guān)閉輸出流,無法寫出字符到文件中。但是關(guān)閉的流對象,是無法繼續(xù)
20、寫出數(shù)據(jù)的。如果我們既想寫出數(shù)據(jù),又想繼續(xù)使用流,就需要 flush 了。flush :刷新緩沖區(qū),流對象可以繼續(xù)使用。:關(guān)閉流, 系統(tǒng)資源。關(guān)閉前會刷新緩沖區(qū)。代碼使用演示:市昌平區(qū)建材城西路 龍辦公樓一層 :public class FWWrite public static void main(String args) throws IOException public class FWWrite public static void main(String args) throws IOException / 使用文件名稱創(chuàng)建流對象FileWriter fw = new FileWri
21、ter(fw.txt);/ 寫出數(shù)據(jù)fw.write(97); / 寫出第1個字符fw.write(b); / 寫出第2個字符fw.write(C); / 寫出第3個字符fw.write(30000); / 寫出第4個字符,中文編碼表中30000對應(yīng)一個漢字。/*【注意】關(guān)閉資源時,與FileOutputStream不同。如果不關(guān)閉,數(shù)據(jù)只是保存到緩沖區(qū),并未保存到文件。*/ fw. ();輸出結(jié)果:abC田public class FileWriterConstructor public static void main(String args) throws IOException / 使
22、用File對象創(chuàng)建流對象File file = new File(a.txt); FileWriter fw = new FileWriter(file);/ 使用文件名稱創(chuàng)建流對象FileWriter fw = new FileWriter(b.txt);小貼士:即便是ush 寫出了數(shù)據(jù),操作的最后還是要調(diào)用寫出其他數(shù)據(jù)1. 寫出字符數(shù)組 : write(char cbuf) 和 write(char cbuf, int off, int len) ,每次可以寫出字符數(shù)組中的數(shù)據(jù),用法類似FileOutputStream,代碼使用演示:2. 寫出字符串: write(String str)
23、和 write(String str, int off, int len) ,每次可以寫出字符串中的數(shù)據(jù),更為方便,代碼使用演示:市昌平區(qū)建材城西路 龍辦公樓一層 :public class FWWrite public static void main(String args) throws IOException / 使用文件名稱創(chuàng)建流對象FileWriter fw = new FileWriter(fw.txt);/ 字符串String msg = 程序員;/ 寫出字符數(shù)組public class FWWrite public static void main(String args)
24、throws IOException / 使用文件名稱創(chuàng)建流對象FileWriter fw = new FileWriter(fw.txt);/ 字符串轉(zhuǎn)換為字節(jié)數(shù)組char chars = 程序員.toCharArray();/ 寫出字符數(shù)組fw.write(chars); / 程序員/ 寫出從索引2開始,2個字節(jié)。索引2是程,兩個字節(jié),也就是程序。fw.write(b,2,2); / 程序/ 關(guān)閉資源fos. ();/ 使用文件名稱創(chuàng)建流對象FileWriter fw = new FileWriter(fw.txt);/ 寫出數(shù)據(jù),通過flush fw.write(刷); / 寫出第1個字
25、符fw.flush();fw.write(新); / 繼續(xù)寫出第2個字符,寫出fw.flush();/ 寫出數(shù)據(jù),通過fw.write(關(guān)); / 寫出第1個字符fw. ();fw.write(閉); / 繼續(xù)寫出第2個字符,【報錯】java.io.IOException: Stream d fw. ();3. 續(xù)寫和換行:操作類似于FileOutputStream。小貼士:字符流,只能操作文本文件,不能操作圖片, 等非文本文件。當我們單純讀或者寫文本文件時 使用字符流 其他情況使用字節(jié)流第三章 IO異常的處理JDK7前處理之前的入門練習(xí), 把異常拋出,而實際開發(fā)中并不能這樣處理,建議使用 t
26、ry.catch.finally 代碼塊,處理異常部分,代碼使用演示:市昌平區(qū)建材城西路 龍辦公樓一層 :public class HandleException1 public static void main(String args) / 變量 FileWriter fw = null; try /創(chuàng)建流對象fw = new FileWriter(fw.txt);/ 寫出數(shù)據(jù)fw.write( 程序員); / 程序員 catch (IOException e) public class FWWrite public static void main(String args) throws
27、IOException / 使用文件名稱創(chuàng)建流對象,可以續(xù)寫數(shù)據(jù)FileWriter fw = new FileWriter(fw.txt,true);/ 寫出字符串fw.write( );/ 寫出換行fw.write(rn);/ 寫出字符串fw.write(程序員);/ 關(guān)閉資源fw. ();輸出結(jié)果: 程序員fw.write(msg); / 程序員/ 寫出從索引2開始,2個字節(jié)。索引2是程,兩個字節(jié),也就是程序。fw.write(msg,2,2); / 程序/ 關(guān)閉資源fos. ();JDK7的處理還可以使用JDK7優(yōu)化后的 try-with-resource 語句,該語句確保了每個資源在
28、語句結(jié)束時關(guān)閉。所謂的資源(resource)是指在程序完成后,必須關(guān)閉的對象。格式:代碼使用演示:第四章 屬性集4.1 概述java.util.Properties 繼承于 Hashtable ,來表示一個持久的屬性集。它使用鍵值結(jié)構(gòu) 數(shù)據(jù),每個鍵及其對應(yīng)值都是一個字符串。該類也被許多Java類使用,比如獲取系統(tǒng)屬性時, System.getProperties 就是返回一個 Properties 對象。4.2 Properties類市昌平區(qū)建材城西路 龍辦公樓一層 :public class HandleException2 public static void main(String a
29、rgs) / 創(chuàng)建流對象try ( FileWriter fw = new FileWriter(fw.txt); ) / 寫出數(shù)據(jù)fw.write( 程序員); / 程序員 catch (IOException e) e.printStackTrace();try (創(chuàng)建流對象語句,如果多個,使用;隔開) / 讀寫數(shù)據(jù) catch (IOException e) e.printStackTrace();e.printStackTrace(); finally try if (fw != null) fw. (); catch (IOException e) e.printStackTrace
30、();構(gòu)造public Properties() :創(chuàng)建一個空的屬性列表。基本的: 保存一對屬性。public Object setProperty(String key, String value)public String getProperty(String key) :使用此屬性列表中指定的鍵搜索屬性值。:所有鍵的名稱的集合。public Set stringPropertyNames()public class ProDemo public static void main(String args) throws FileNotFoundException / 創(chuàng)建屬性集對象Properties properties = new Properties();/ 添加鍵值對元素properties.setProperty(filename, a.txt); properties.setProperty(length, 209385038); properties.setProperty(location, D:a.txt);/ 打印屬性集對象System.out.println(properties);/ 通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省綿陽市梓潼縣2024-2025學(xué)年八年級上學(xué)期1月期末考試歷史試卷(含答案)
- 山東省德州市高中五校聯(lián)考2024-2025學(xué)年高二上學(xué)期期末英語試題(含答案無聽力原文及音頻)
- 2024環(huán)保節(jié)能項目投資與技術(shù)轉(zhuǎn)讓合同
- 高考數(shù)學(xué)一輪總復(fù)習(xí) 必考解答題 模板成形練 理 蘇教版
- 2024版項目開發(fā)合作合同
- 2024項目合作反腐附加合同書版B版
- 2024聘用制片人合同
- 2024腳手架勞務(wù)合同
- 2025年度35kv架空線路施工進度款支付合同范本3篇
- 2025不銹鋼玻璃幕墻安裝與清潔服務(wù)合同3篇
- 石油工程設(shè)計大賽油藏工程組獲獎作品
- 復(fù)方新諾明與其他藥物的相互作用
- 人臉識別考勤系統(tǒng)方案
- 人教版七年級上冊數(shù)學(xué)競賽、培優(yōu)強化訓(xùn)練試卷及答案(共15份)
- 2024年北京市公務(wù)員錄用考試申論真題及解析
- 2024年青島酒店管理職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 2024年益陽職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 雷火灸可行性分析報告
- 眼鏡消費者行為分析報告
- 《無線通信基礎(chǔ)》課件
- 表格版人教部編版統(tǒng)編版四年級語文下冊全冊教案電子備課二次備課
評論
0/150
提交評論