版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java程序設(shè)計(jì)實(shí)用教程(第4版)第第8章章 輸入輸入/輸出流和文件操作輸出流和文件操作 8.1 文件和流的概念文件和流的概念 8.2 字節(jié)輸入字節(jié)輸入/輸出流類輸出流類 8.3 字符輸入字符輸入/輸出流類輸出流類 8.4 文件操作文件操作本章討論的類在java.io包中Java程序設(shè)計(jì)實(shí)用教程(第4版)第第8章章 輸入輸入/輸出流和文件操作輸出流和文件操作內(nèi)容和要求:內(nèi)容和要求:理解流的概念;掌握字節(jié)流和字符流對類型文件和文理解流的概念;掌握字節(jié)流和字符流對類型文件和文本文件進(jìn)行順序處理;熟悉在對象之間通過流傳遞數(shù)本文件進(jìn)行順序處理;熟悉在對象之間通過流傳遞數(shù)據(jù)的方法;了解據(jù)的方法;了解Ja
2、va的標(biāo)準(zhǔn)輸入的標(biāo)準(zhǔn)輸入/輸出方法。輸出方法。掌握文件操作,掌握掌握文件操作,掌握File類,熟悉文件過濾器、文件對類,熟悉文件過濾器、文件對話框;了解話框;了解RandomAccessFile隨機(jī)存取文件類。隨機(jī)存取文件類。重點(diǎn):重點(diǎn):各種字節(jié)流類,字符流類,各種字節(jié)流類,字符流類,F(xiàn)ile類。類。 難點(diǎn):難點(diǎn): 如何選擇使用哪種字節(jié)流或字符流,掌握程序設(shè)如何選擇使用哪種字節(jié)流或字符流,掌握程序設(shè)計(jì)方法,而不是死記硬背。計(jì)方法,而不是死記硬背。 操作系統(tǒng)的文件組織方式是樹結(jié)構(gòu),遞歸算法。操作系統(tǒng)的文件組織方式是樹結(jié)構(gòu),遞歸算法。Java程序設(shè)計(jì)實(shí)用教程(第4版)8.1 文件和流的概念文件和流
3、的概念8.1.1 操作系統(tǒng)中的文件和目錄概念操作系統(tǒng)中的文件和目錄概念1.文件與文件系統(tǒng)文件與文件系統(tǒng)文件文件(file)是信息的一種組織形式,是存儲在外部是信息的一種組織形式,是存儲在外部存儲介質(zhì)上的具有標(biāo)志名的一組相關(guān)信息集合。存儲介質(zhì)上的具有標(biāo)志名的一組相關(guān)信息集合。文件系統(tǒng)提供目錄機(jī)制實(shí)現(xiàn)文件的文件系統(tǒng)提供目錄機(jī)制實(shí)現(xiàn)文件的“按名存取按名存取”。文件的邏輯結(jié)構(gòu):流式文件、記錄式文件;文件的邏輯結(jié)構(gòu):流式文件、記錄式文件;2.文件的存取方式:順序、隨機(jī)、索引。文件的存取方式:順序、隨機(jī)、索引。Java程序設(shè)計(jì)實(shí)用教程(第4版)8.1.2 流的概念流的概念1.流:一組有順序的、有起點(diǎn)和終點(diǎn)
4、的字節(jié)集合,流:一組有順序的、有起點(diǎn)和終點(diǎn)的字節(jié)集合,是對數(shù)據(jù)傳輸?shù)目偡Q或抽象。是對數(shù)據(jù)傳輸?shù)目偡Q或抽象。2.緩沖流:配備緩沖區(qū)的流,一次從緩沖區(qū)中讀緩沖流:配備緩沖區(qū)的流,一次從緩沖區(qū)中讀寫若干字節(jié)。寫若干字節(jié)。3.流的存在流的存在Java程序設(shè)計(jì)實(shí)用教程(第4版)3. Java的流類與文件類的流類與文件類1.流類流類InputStream抽象字節(jié)輸入流類抽象字節(jié)輸入流類OuputStream抽象字節(jié)輸出流類抽象字節(jié)輸出流類Reader抽象字符輸入流類抽象字符輸入流類Writer抽象字符輸出流類抽象字符輸出流類2.文件類文件類File文件類文件類RandomAccessFile 隨機(jī)存取文件
5、類隨機(jī)存取文件類Java程序設(shè)計(jì)實(shí)用教程(第4版)3. Java的流類與文件類的流類與文件類Java程序設(shè)計(jì)實(shí)用教程(第4版)8.2 字節(jié)輸入字節(jié)輸入/輸出流類輸出流類n8.2.1 抽象字節(jié)流抽象字節(jié)流n8.2.2 文件字節(jié)流文件字節(jié)流Java程序設(shè)計(jì)實(shí)用教程(第4版)8.2.1 抽象字節(jié)流抽象字節(jié)流 1、InputStream抽象字節(jié)輸入流類抽象字節(jié)輸入流類public abstract class InputStream extends Object implements Closeable public abstract int read() throws IOException; /返
6、回讀取的一個字節(jié),抽象方法返回讀取的一個字節(jié),抽象方法 public int read(byte buffer) throws IOException /從輸入流中讀取若干字節(jié)到指定緩沖區(qū),返回實(shí)從輸入流中讀取若干字節(jié)到指定緩沖區(qū),返回實(shí)際讀取的字節(jié)數(shù)際讀取的字節(jié)數(shù) public void close() throws IOException /關(guān)閉流關(guān)閉流Java程序設(shè)計(jì)實(shí)用教程(第4版)2. OutputStream抽象字節(jié)輸出抽象字節(jié)輸出流類流類public abstract class OutputStream extends Object implements Closeable,
7、Flushable public abstract void write(int b) throws IOException; /寫入寫入1個字節(jié),抽象方法個字節(jié),抽象方法 public void write(byte buffer) throws IOException /將字節(jié)數(shù)組寫入字節(jié)流將字節(jié)數(shù)組寫入字節(jié)流 public void flush() throws IOException/立即傳輸立即傳輸 public void close() throws IOException /關(guān)閉流關(guān)閉流Java程序設(shè)計(jì)實(shí)用教程(第4版)8.2.2 文件字節(jié)流文件字節(jié)流1.FileInputSre
8、am文件字節(jié)輸入流類文件字節(jié)輸入流類public class FileInputStream extends InputStream public FileInputStream(String filename) throws FileNotFoundException public FileInputStream(File file) throws FileNotFoundException Java程序設(shè)計(jì)實(shí)用教程(第4版)2. FileOutputStream文件字節(jié)文件字節(jié)輸出流類輸出流類public class FileOutputStream extends OutputStrea
9、m public FileOutputStream(String filename) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException public FileOutputStream(String filename, boolean append) throws FileNotFoundExceptionJava程序設(shè)計(jì)實(shí)用教程(第4版)【例例8.1】 理解字節(jié)流。理解字節(jié)流。【思考題思考題8-2】向字節(jié)流寫入向字節(jié)流寫入1字節(jié)字節(jié)-256和和256,再,再各
10、讀取各讀取1字節(jié),值為多少?為什么?字節(jié),值為多少?為什么?【答答】0,因?yàn)?,因?yàn)?256 (11 00000000) ; 0,256 (001 00000000) 從文件字節(jié)流中讀寫從文件字節(jié)流中讀寫1個字節(jié)個字節(jié)Java程序設(shè)計(jì)實(shí)用教程(第4版)(2) 從字節(jié)流中讀寫從字節(jié)流中讀寫4個字節(jié)作為個字節(jié)作為1個個int整數(shù)整數(shù)Java程序設(shè)計(jì)實(shí)用教程(第4版)(3) 文件復(fù)制操作文件復(fù)制操作實(shí)現(xiàn)下面實(shí)現(xiàn)下面copyFile()方法,完成兩個文件的方法,完成兩個文件的復(fù)制,以字節(jié)為單位進(jìn)行讀寫操作。復(fù)制,以字節(jié)為單位進(jìn)行讀寫操作。public void copyFile(String fileN
11、ameIn, String fileNameOut);Java程序設(shè)計(jì)實(shí)用教程(第4版)圖圖8.2 各種字節(jié)輸入各種字節(jié)輸入/輸出流的讀輸出流的讀/寫方法寫方法 FileOutputStream fout = new FileOutputStream(filename);DataOutputStream dout = new DataOutputStream(fout);/以文件字節(jié)流作為數(shù)據(jù)源以文件字節(jié)流作為數(shù)據(jù)源for (int i=0; ivalues.length; i+)dout.writeInt(valuesi); /向字節(jié)輸出流寫入一個int整數(shù),4個字節(jié)dout.close()
12、; /先關(guān)閉數(shù)據(jù)流fout.close(); /再關(guān)閉文件流Java程序設(shè)計(jì)實(shí)用教程(第4版)圖圖8.3 使用流類和文件類出現(xiàn)使用流類和文件類出現(xiàn)異常類的層次結(jié)構(gòu)異常類的層次結(jié)構(gòu)Java程序設(shè)計(jì)實(shí)用教程(第4版)8.3 字符輸入字符輸入/輸出流類輸出流類n8.3.1 抽象字符流抽象字符流n8.3.2 字節(jié)字節(jié)/字符轉(zhuǎn)換流字符轉(zhuǎn)換流 n8.3.3 文件字符流文件字符流n8.3.4 緩沖字符流緩沖字符流n8.3.5 格式化字符輸出流格式化字符輸出流 n8.3.6 Java標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出輸出Java程序設(shè)計(jì)實(shí)用教程(第4版)8.3.1 抽象字符流抽象字符流1.Reader抽象字符輸入流類抽象
13、字符輸入流類public abstract class Reader extends Object implements Readable, Closeable public int read() throws IOException public int read(char cbuffer) throws IOException public abstract void close() throws IOException;Java程序設(shè)計(jì)實(shí)用教程(第4版)2. Writer抽象字符輸出流類抽象字符輸出流類public abstract class Writer implements App
14、endable, Closeable, Flushable public void write(int c) throws IOException public void write(char cbuffer) throws IOException public void write(String str) throws IOException /將字符串寫入輸出流將字符串寫入輸出流 public abstract void close() throws IOException Java程序設(shè)計(jì)實(shí)用教程(第4版)圖圖8.10 各種字符輸入各種字符輸入/輸出流的輸出流的讀讀/寫方法寫方法 Jav
15、a程序設(shè)計(jì)實(shí)用教程(第4版)8.3.2 字節(jié)字節(jié)/字符轉(zhuǎn)換流字符轉(zhuǎn)換流 1.InputStreamReader字節(jié)輸入流轉(zhuǎn)換成字符輸入流類字節(jié)輸入流轉(zhuǎn)換成字符輸入流類public class InputStreamReader extends Reader public InputStreamReader(InputStream in) /in指定字節(jié)輸入流作為數(shù)據(jù)源,采用默認(rèn)字符集指定字節(jié)輸入流作為數(shù)據(jù)源,采用默認(rèn)字符集 public InputStreamReader(InputStream in, String charsetName) /指定字符集名稱指定字符集名稱 throws Un
16、supportedEncodingException /不支持不支持charsetName字符集,拋出異常字符集,拋出異常 public String getEncoding() /返回字符集名稱字符串返回字符集名稱字符串Java程序設(shè)計(jì)實(shí)用教程(第4版)2.字節(jié)輸出流轉(zhuǎn)換成字符輸出流字節(jié)輸出流轉(zhuǎn)換成字符輸出流OutputStreamWriterpublic class OutputStreamWriter extends Writer public OutputStreamWriter(OutputStream out) /指定字節(jié)輸出流作為數(shù)據(jù)源,默認(rèn)字符集指定字節(jié)輸出流作為數(shù)據(jù)源,默認(rèn)字
17、符集 public OutputStreamWriter(OutputStream out, Charset charset) /charset指定字符集指定字符集 public String getEncoding() /返回字符集名返回字符集名Java程序設(shè)計(jì)實(shí)用教程(第4版)8.3.3 文件字符流文件字符流1.FileReader文件字符輸入流類文件字符輸入流類public class FileReader extends InputStreamReader public FileReader(String fileName) throws FileNotFoundException p
18、ublic FileReader(File file) throws FileNotFoundExceptionJava程序設(shè)計(jì)實(shí)用教程(第4版)2. FileWriter文件字符輸出流類文件字符輸出流類public class FileWriter extends OutputStreamWriter public FileWriter(String fileName) throws IOException public FileWriter(String fileName, boolean append) throws IOException public FileWriter(File
19、file) throws IOException public FileWriter(File file, boolean append) throws IOException Java程序設(shè)計(jì)實(shí)用教程(第4版)8.3.4 緩沖字符流緩沖字符流1.BufferedReader字符緩沖輸入流類字符緩沖輸入流類public class BufferedReader extends Reader public BufferedReader(Reader reader) public String readLine() throws IOException /讀取一行字符串,輸入流結(jié)束時返回讀取一行字
20、符串,輸入流結(jié)束時返回null2.BufferedWriter字符緩沖輸出流類字符緩沖輸出流類public class BufferedWriter extends Writer public BufferedWriter(Writer writer) public void newLine() throws IOException /寫入換行符寫入換行符Java程序設(shè)計(jì)實(shí)用教程(第4版)8.3.6 Java標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出輸出1.標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出常量輸出常量public final class System extends Object public final static I
21、nputStream in /標(biāo)準(zhǔn)輸入常量標(biāo)準(zhǔn)輸入常量 public final static PrintStream out /標(biāo)準(zhǔn)輸出常量標(biāo)準(zhǔn)輸出常量 public final static PrintStream err /標(biāo)準(zhǔn)錯誤輸出常量標(biāo)準(zhǔn)錯誤輸出常量Java程序設(shè)計(jì)實(shí)用教程(第4版)PrintStream格式化字節(jié)輸出流類格式化字節(jié)輸出流類public class PrintStream extends FilterOutputStream public void print(boolean b) public void print(char c) public void prin
22、t(long l) public void print(int i) public void print(float f) public void print(double d) public void print(String s) public void print(Object obj) public void println()Java程序設(shè)計(jì)實(shí)用教程(第4版)【例例8.6】標(biāo)準(zhǔn)輸入問題討論。標(biāo)準(zhǔn)輸入問題討論。1.System.in.read()按字節(jié)讀取字符,存在按字節(jié)讀取字符,存在問題問題 2.使用使用String實(shí)現(xiàn)實(shí)現(xiàn)GBK編碼字符串與編碼字符串與Unicode編碼字符串的雙向
23、轉(zhuǎn)換編碼字符串的雙向轉(zhuǎn)換 3.使用字節(jié)使用字節(jié)/字符轉(zhuǎn)換流字符轉(zhuǎn)換流 Java程序設(shè)計(jì)實(shí)用教程(第4版)8.4 文件操作文件操作n8.4.1 文件類及其過濾器類文件類及其過濾器類n8.4.2 文件對話框組件文件對話框組件n8.4.3 隨機(jī)存取文件類隨機(jī)存取文件類Java程序設(shè)計(jì)實(shí)用教程(第4版)8.4.1 文件類及其過濾器類文件類及其過濾器類1.構(gòu)造文件和目錄對象構(gòu)造文件和目錄對象public class File extends Object implements Serializable, Comparable public File(String pathname) public Fil
24、e(String parent, String child) public File(File parent, String child)File file = new File(myfile.txt); File dir = new File(“.”,“”); /目錄文件,當(dāng)前目錄目錄文件,當(dāng)前目錄 File dir = new File(C:,); Java程序設(shè)計(jì)實(shí)用教程(第4版)2. File類提供的方法類提供的方法(1) 訪問文件對象方法訪問文件對象方法String getName()/返回文件名,不包含路徑名返回文件名,不包含路徑名String getPath()/返回相對路徑名,
25、包含文件名返回相對路徑名,包含文件名String getAbsolutePath() /返回絕對路徑名,包含文件名返回絕對路徑名,包含文件名String getParent() /返回父文件對象的路徑名返回父文件對象的路徑名File getParentFile() /返回父文件對象返回父文件對象Java程序設(shè)計(jì)實(shí)用教程(第4版)(2)獲得或設(shè)置文件屬性獲得或設(shè)置文件屬性long length() /返回文件的字節(jié)長度返回文件的字節(jié)長度long lastModified() /返回文件的最后修改時間返回文件的最后修改時間boolean exists() /判斷當(dāng)前文件或目錄是否存在判斷當(dāng)前文件或
26、目錄是否存在boolean isFile() /判斷當(dāng)前文件對象是否為文件判斷當(dāng)前文件對象是否為文件boolean isDirectory() /判斷文件對象是否為目錄判斷文件對象是否為目錄boolean setReadOnly()/設(shè)置文件屬性為只讀設(shè)置文件屬性為只讀boolean setLastModified(long time) /設(shè)置文件的最后修改時間設(shè)置文件的最后修改時間Java程序設(shè)計(jì)實(shí)用教程(第4版)(3) 文件操作方法文件操作方法int compareTo(File pathname) /比較兩個文件對象的內(nèi)容比較兩個文件對象的內(nèi)容boolean renameTo(File
27、dest) /文件重命名文件重命名boolean createNewFile() throws IOException /創(chuàng)建新文件創(chuàng)建新文件boolean delete() /刪除文件或空目錄刪除文件或空目錄Java程序設(shè)計(jì)實(shí)用教程(第4版)(4) 目錄操作方法目錄操作方法public boolean mkdir() /創(chuàng)建指定目錄,正常建立時返回創(chuàng)建指定目錄,正常建立時返回truepublic String list() /返回目錄中的所有文件名字符串返回目錄中的所有文件名字符串public File listFiles() /返回目錄中的所有文件對象返回目錄中的所有文件對象Java程序設(shè)計(jì)實(shí)用教程(第4版)3. 文件過濾器接口文件過濾器接口1.FileF
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度臨時鋼棚租賃與維護(hù)服務(wù)合同4篇
- 2025年度網(wǎng)絡(luò)廣告投放服務(wù)合同書
- 2025年度工業(yè)自動化設(shè)備購銷合同范本
- 2025年度光纖通信網(wǎng)絡(luò)建設(shè)項(xiàng)目施工合同
- 2025年度廣告媒體資源采購合同范本
- 2025年度荒地承包合同書范本(含農(nóng)業(yè)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整及轉(zhuǎn)型升級條款)
- 2025年度國家重點(diǎn)水利工程承包合同頁15
- 2025年度知識產(chǎn)權(quán)股份抵押貸款擔(dān)保合同
- 2025年度數(shù)據(jù)中心環(huán)氧地坪施工與電磁屏蔽合同
- 2025年種鴿繁殖基地建設(shè)資金預(yù)付合同范本
- 醫(yī)院消防安全培訓(xùn)課件
- 《00541語言學(xué)概論》自考復(fù)習(xí)題庫(含答案)
- 2025年機(jī)關(guān)工會個人工作計(jì)劃
- 江蘇省南京市、鹽城市2023-2024學(xué)年高三上學(xué)期期末調(diào)研測試+英語+ 含答案
- 2024護(hù)理不良事件分析
- 光伏項(xiàng)目的投資估算設(shè)計(jì)概算以及財務(wù)評價介紹
- 電力安全工作規(guī)程(完整版)
- 2024年湖南省公務(wù)員錄用考試《行測》試題及答案解析
- 借名買車的協(xié)議書范文范本
- 《2024 ESC血壓升高和高血壓管理指南》解讀
- 20世紀(jì)西方音樂智慧樹知到期末考試答案章節(jié)答案2024年北京大學(xué)
評論
0/150
提交評論