版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1注意:開始用功了注意:開始用功了!2Java程序設(shè)計實用教程程序設(shè)計實用教程 第第10章章配合例子源代碼一起使用例子源代碼一起使用Power point 制作:耿祥義 張躍平輸入、輸出流 3導(dǎo)導(dǎo)讀讀4 輸入、輸出流提供一條通道程序,可以使用這條通輸入、輸出流提供一條通道程序,可以使用這條通道讀取源中的數(shù)據(jù)或把數(shù)據(jù)傳送到目的地。道讀取源中的數(shù)據(jù)或把數(shù)據(jù)傳送到目的地。把輸入流的指向稱作源,程序從指向源的輸入流中讀把輸入流的指向稱作源,程序從指向源的輸入流中讀取源中的數(shù)據(jù);取源中的數(shù)據(jù);而輸出流的指向是數(shù)據(jù)要去的一個目的地,程序通過而輸出流的指向是數(shù)據(jù)要去的一個目的地,程序通過向輸出流中寫入數(shù)據(jù)把
2、數(shù)據(jù)傳送到目的地。向輸出流中寫入數(shù)據(jù)把數(shù)據(jù)傳送到目的地。 概述概述510.1 FileFile類類 FileFile對象主要用來獲取文件本身的一些信息,對象主要用來獲取文件本身的一些信息,不涉及對文件的讀寫操作。不涉及對文件的讀寫操作。 創(chuàng)建一個創(chuàng)建一個FileFile對象的構(gòu)造方法有對象的構(gòu)造方法有3 3個:個: File(String filename); File(String directoryPath,String filename); File(File f, String filename); 610.1.1 文件的屬性文件的屬性 File類的下列方法獲取文件本身的一些信息。類的
3、下列方法獲取文件本身的一些信息。 public String getName() 獲取文件的名字。public boolean canRead() 判斷文件是否是可讀的。public boolean canWrite() 判斷文件是否可被寫入。public boolean exits() 判斷文件是否存在。public long length() 獲取文件的長度(單位是字節(jié))。public String getAbsolutePath() 獲取文件的絕對路徑。public String getParent() 獲取文件的父目錄。public boolean isFile() 判斷文件是否是一個
4、普通文件,而不是目錄。public boolean isDirectroy() 判斷文件是否是一個目錄。public boolean isHidden() 判斷文件是否是隱藏文件。public long lastModified() 獲取文件最后修改的時間。 例例10-110-17例例10-110-1例例10-1 10-1 Example10_1.javaExample10_1.java page 177page 177810.1.2 目錄目錄 1 1創(chuàng)建目錄創(chuàng)建目錄 public boolean mkdir()2 2列出目錄中的文件列出目錄中的文件 public String list()
5、用字符串形式返回目錄下的全部文件。 public File listFiles() 用File對象形式返回目錄下的全部文件。 public String list(FilenameFilter obj) 用字符串形式返回目錄下的指定類型的所有文件。 public File listFiles(FilenameFilter obj) 用File對象形式返回目錄下的指定類型所有文件。 上述兩方法的參數(shù)上述兩方法的參數(shù)FilenameFilter是一個接口是一個接口,該接口有一個該接口有一個方法:方法: public boolean accept(File dir,String name); 例例1
6、0-2 10-2 Example10_2.javaExample10_2.java , , FileAccept.java FileAccept.java 910.1.3 文件的創(chuàng)建與刪除文件的創(chuàng)建與刪除 當(dāng)使用當(dāng)使用FileFile類創(chuàng)建一個文件對象后,例如類創(chuàng)建一個文件對象后,例如 File file=new File(c:myletter,letter.txt); 如果如果c:myletter目錄中沒有名字為目錄中沒有名字為letter.txt文件文件,文件對文件對象象filefile調(diào)用方法調(diào)用方法 public boolean createNewFile();可以在可以在c:myle
7、tter目錄中建立一個名字為目錄中建立一個名字為letter.txt的的 文件對象調(diào)用方法文件對象調(diào)用方法 public boolean delete()可以刪除當(dāng)可以刪除當(dāng)前文件,例如:前文件,例如: file.delete(); 1010.1.4 運行可執(zhí)行文件運行可執(zhí)行文件 用用Runtime Runtime 類類聲明一個對象聲明一個對象( RuntimeRuntime類在類在java.langjava.lang包包) Runtime ec; 然后使用該類的然后使用該類的getRuntime()靜態(tài)方法創(chuàng)建這個對象:靜態(tài)方法創(chuàng)建這個對象: ec=Runtime.getRuntime();
8、 ecec可以調(diào)用可以調(diào)用exec(String command)方法打開本地機的方法打開本地機的可執(zhí)行文件或執(zhí)行一個操作??蓤?zhí)行文件或執(zhí)行一個操作。 例例10-3 10-3 Example10_3.javaExample10_3.java 1110.2 字節(jié)流與字符流字節(jié)流與字符流 java.iojava.io包提供了大量的流類,包提供了大量的流類,JavaJava把把InputStreamInputStream抽象類的子類創(chuàng)建的流對象稱作字抽象類的子類創(chuàng)建的流對象稱作字節(jié)輸入流、節(jié)輸入流、OutputStreamOutputStream抽象類的子類創(chuàng)建的抽象類的子類創(chuàng)建的流對象稱作字節(jié)輸出
9、流,流對象稱作字節(jié)輸出流,JavaJava把把ReaderReader抽象類抽象類的子類創(chuàng)建的流對象稱作字符輸入流、的子類創(chuàng)建的流對象稱作字符輸入流、WriterWriter抽象類的子類創(chuàng)建的流對象稱作字符輸出流。抽象類的子類創(chuàng)建的流對象稱作字符輸出流。 針對不同的源或目的地,針對不同的源或目的地,java.iojava.io包為程序包為程序提供了相應(yīng)的輸入流或輸出流,這些輸入、輸提供了相應(yīng)的輸入流或輸出流,這些輸入、輸出流絕大部分都是出流絕大部分都是InputStreamInputStream、OutputStreamOutputStream、ReaderReader或或WriterWrit
10、er的子類。的子類。 1210.2.1 InputStreamInputStream類與類與OutputSreamOutputSream類類 InputStream類提供的類提供的read方法以字節(jié)為單位順序地讀取源方法以字節(jié)為單位順序地讀取源中的數(shù)據(jù),只要不關(guān)閉流,每次調(diào)用中的數(shù)據(jù),只要不關(guān)閉流,每次調(diào)用read方法就順序地讀取源中方法就順序地讀取源中的其余內(nèi)容,直到源的末尾或輸入流被關(guān)閉。的其余內(nèi)容,直到源的末尾或輸入流被關(guān)閉。InputStream類有如下常用的方法。類有如下常用的方法。 int read() int read(byte b ) int read(byte b , int
11、 off, int len) void close() long skip(long numBytes) OutputStream流以字節(jié)為單位順序地寫文件,只要不關(guān)閉流以字節(jié)為單位順序地寫文件,只要不關(guān)閉流,每次調(diào)用流,每次調(diào)用write方法就順序地向目的地寫入內(nèi)容,直到流被方法就順序地向目的地寫入內(nèi)容,直到流被關(guān)閉。關(guān)閉。 OutputStream類有如下的常用的方法。類有如下的常用的方法。 void write(int n) void write(byte b ) void write(byte b , int off, int len) void close()13 10.2.2 Re
12、ader類與類與Writer類類 1Reader類提供的類提供的read方法以字符為單位順序地讀取源中的方法以字符為單位順序地讀取源中的數(shù)據(jù)。數(shù)據(jù)。 int read(): int read(char b): int read(char b, int off, int len): void close(): long skip(long numBytes): 2 Writer流以字符為單位順序地寫文件,每次調(diào)用流以字符為單位順序地寫文件,每次調(diào)用write方法方法就順序地向目的地寫入內(nèi)容。就順序地向目的地寫入內(nèi)容。 Writer類有如下常用的方法。類有如下常用的方法。 void write(i
13、nt n): 向輸出流寫入一個字符。 void write(byte b): 向輸出流寫入一個字符數(shù)組。 void write(byte b,int off,int length): 從給定字符數(shù)組中起始于偏移量off處取len個字符寫到輸出流。 void close(): 關(guān)閉輸出流。14 10.2.3 關(guān)閉流關(guān)閉流 流都提供了關(guān)閉方法流都提供了關(guān)閉方法close(),盡管程序結(jié)束時會自盡管程序結(jié)束時會自動關(guān)閉所有打開的流,但是當(dāng)程序使用完流后,顯式地動關(guān)閉所有打開的流,但是當(dāng)程序使用完流后,顯式地關(guān)閉任何打開的流仍是一個良好的習(xí)慣。關(guān)閉任何打開的流仍是一個良好的習(xí)慣。 通過調(diào)用通過調(diào)用cl
14、ose()方法,可以保證操作系統(tǒng)把流緩沖方法,可以保證操作系統(tǒng)把流緩沖區(qū)的內(nèi)容寫到它的目的地,即關(guān)閉輸出流可以把該流所區(qū)的內(nèi)容寫到它的目的地,即關(guān)閉輸出流可以把該流所用的緩沖區(qū)的內(nèi)容沖洗掉。用的緩沖區(qū)的內(nèi)容沖洗掉。 1510.3 文件字節(jié)流文件字節(jié)流 由于應(yīng)用程序經(jīng)常需要和文件打交道,所以由于應(yīng)用程序經(jīng)常需要和文件打交道,所以I n p u t S t r e a m 專 門 提 供 了 讀 寫 文 件 的 子 類 :專 門 提 供 了 讀 寫 文 件 的 子 類 :FileInputStream和和FileOutputSream類。如果程序?qū)ξ念?。如果程序?qū)ξ募牟僮鞅容^簡單,比如只是順序地
15、讀寫文件,那么就件的操作比較簡單,比如只是順序地讀寫文件,那么就可以使用可以使用FileInputStream和和FileOutputSream類創(chuàng)建的類創(chuàng)建的流對文件進行讀寫操作。流對文件進行讀寫操作。 1610.3.1 文件字節(jié)輸入流文件字節(jié)輸入流 1 1創(chuàng)建文件字節(jié)輸入流創(chuàng)建文件字節(jié)輸入流 FileInputStream FileInputStream類創(chuàng)建的對象被稱作文件字節(jié)輸入流。類創(chuàng)建的對象被稱作文件字節(jié)輸入流。 構(gòu)造方法構(gòu)造方法: FileInputStream(String name); FileInputStream(File file); 讀取一個名為讀取一個名為hello
16、.txthello.txt的文件,建立一個文件輸入流對象,如下所示:的文件,建立一個文件輸入流對象,如下所示: try FileInputStream in = new FileInputStream(hello.txt); catch (IOException e) System.out.println(File read error:+e ); 2 2readread方法方法以字節(jié)為單位讀文件以字節(jié)為單位讀文件 int read(); int read(byte b); int read(byte b,int off,int len); 例例10-4 10-4 Example10_4.ja
17、vaExample10_4.java 1710.3.2 文件字節(jié)輸出流文件字節(jié)輸出流 1 1創(chuàng)建文件字節(jié)輸創(chuàng)建文件字節(jié)輸出出流流 FileOutputStream FileOutputStream類創(chuàng)建的對象被稱作文件字節(jié)輸出流。類創(chuàng)建的對象被稱作文件字節(jié)輸出流。 構(gòu)造方法:構(gòu)造方法: FileOutputStream(String name) FileOutputStream(File file) 2 2以字節(jié)為單位寫文件以字節(jié)為單位寫文件 FileOutputStreamFileOutputStream流的目的地是文件,所以文件輸出流調(diào)用流的目的地是文件,所以文件輸出流調(diào)用write(by
18、te b )方法把字節(jié)寫入到文件。方法把字節(jié)寫入到文件。 例例10-5 10-5 Example10_5.javaExample10_5.java 1810.4 文件字符流文件字符流 1 1FileReader和和FileWriter用來創(chuàng)建文件字符輸入、輸用來創(chuàng)建文件字符輸入、輸出出流,流,構(gòu)造方法:構(gòu)造方法: FileReader(String filename); FileReader(File filename); FileWriter (String filename); FileWriter (File filename); 2 2字符輸入流和輸出流的字符輸入流和輸出流的read(
19、)和和write()方法方法以字符為基本單位以字符為基本單位處理數(shù)據(jù)。處理數(shù)據(jù)。 例例10-6 10-6 Example10_6.javaExample10_6.java 1910.5 緩沖流緩沖流 1 1BufferedReaderBufferedReader和和BufferedWriterBufferedWriter類創(chuàng)建的對象稱作緩沖輸類創(chuàng)建的對象稱作緩沖輸入、輸出流。二者的源和目的地必須是字符輸入流和字符輸出流。入、輸出流。二者的源和目的地必須是字符輸入流和字符輸出流。 構(gòu)造方法:構(gòu)造方法: BufferedReader(Reader in); BufferedWriter (Writ
20、er out); 2 2 BufferedReaderBufferedReader和和BufferedWriterBufferedWriter類讀寫文件的方法:類讀寫文件的方法: readLine() BufferedReader流讀取文本行 write(String s,int off,int len)BufferedWriter流把字符串s寫到文件中 newLine(); BufferedWriter流向文件寫入一個回行符 例例10-7 10-7 Example10_7.javaExample10_7.java 2010.6 隨機流隨機流 使用使用RandomAccessFileRando
21、mAccessFile類來創(chuàng)建一個隨機訪問文件流。類來創(chuàng)建一個隨機訪問文件流。RandomAccessFileRandomAccessFile類創(chuàng)建的流的指向既可以作為源也可以作為目類創(chuàng)建的流的指向既可以作為源也可以作為目的地。的地。 構(gòu)造方法:構(gòu)造方法: RandomAccessFile(String name,String mode) ; RandomAccessFile(File file,String mode) ;相關(guān)方法:相關(guān)方法: seek(long a) 定位RandomAccessFile流的讀寫位置 getFilePointer() 獲取流的當(dāng)前讀寫位置 例例10-8 10
22、-8 Example10_8.java Example10_8.java 表表10.1 10.1 RandomAccessFileRandomAccessFile類的常用方法類的常用方法 處理處理readLine()readLine()方法方法在讀取含有非在讀取含有非ASCIIASCII字符的文件時出現(xiàn)字符的文件時出現(xiàn)“亂碼亂碼”現(xiàn)象的方法:現(xiàn)象的方法:1 1讀取讀取 String str=in.readLine();2 2用用“iso-8859-1”iso-8859-1”重新編碼重新編碼 byte b=str.getBytes(iso-8859-1);3 3使用當(dāng)前機器的默認編碼將字節(jié)數(shù)組轉(zhuǎn)
23、化為字符串使用當(dāng)前機器的默認編碼將字節(jié)數(shù)組轉(zhuǎn)化為字符串 String content=new String(b); 例例10-9 10-9 Example10_9.javaExample10_9.java 21表表10.1 10.1 RandomAccessFileRandomAccessFile類的常用方法類的常用方法2210.7 數(shù)組流數(shù)組流 1 1字節(jié)數(shù)組流字節(jié)數(shù)組流: 字節(jié)數(shù)組輸入流字節(jié)數(shù)組輸入流ByteArrayInputStream和字節(jié)數(shù)和字節(jié)數(shù)組輸出流組輸出流ByteArrayOutputStream分別使用字節(jié)數(shù)組作為流的源和分別使用字節(jié)數(shù)組作為流的源和目標。目標。 Byte
24、ArrayInputStreamByteArrayInputStream構(gòu)造方法及構(gòu)造方法及常用方法常用方法 ByteArrayInputStream(byte buf); ByteArrayInputStream(byte buf,int offset,int length); public int read(); ;順序地從源中讀出一個字節(jié)順序地從源中讀出一個字節(jié) public int read(byte b,int off,int len);順序地從源中讀出參數(shù)順序地從源中讀出參數(shù)lenlen指定的字節(jié)指定的字節(jié)數(shù)數(shù) ByteArrayOutputStreamByteArrayOutpu
25、tStream流流構(gòu)造方法及構(gòu)造方法及常用方法常用方法 ByteArrayOutputStream(); ByteArrayOutputStream(int size); public void write(int b); 順序地向緩沖區(qū)寫入一個字節(jié)順序地向緩沖區(qū)寫入一個字節(jié) public void write(byte b,int off,int len); 將參數(shù)將參數(shù)b b中指定的中指定的lenlen個字節(jié)順序個字節(jié)順序地寫入緩沖區(qū)地寫入緩沖區(qū) public byte toByteArray(); 返回輸出流寫入到緩沖區(qū)的全部字節(jié)返回輸出流寫入到緩沖區(qū)的全部字節(jié) 2字符數(shù)組字符數(shù)組 Ch
26、arArrayReader和和CharArrayWriter類類是字符數(shù)組流是字符數(shù)組流,字符數(shù)組流,字符數(shù)組流分別使分別使用字符數(shù)組作為流的源和目標。用字符數(shù)組作為流的源和目標。 例例10-10 10-10 Example10_10.javaExample10_10.java 2310.8 數(shù)據(jù)流數(shù)據(jù)流 DataInputStream和和DataOutputStream類類創(chuàng)建的對象稱為創(chuàng)建的對象稱為數(shù)據(jù)輸入流和數(shù)據(jù)輸出流。數(shù)據(jù)輸入流和數(shù)據(jù)輸出流。 構(gòu)造方法構(gòu)造方法DataInputStream(InputStream in)創(chuàng)建的數(shù)據(jù)輸入流指向一個由參數(shù)in指定的底層輸入流DataOutp
27、utStream(OutnputStream out)創(chuàng)建的數(shù)據(jù)輸出流指向一個由參數(shù)out指定的底層輸出流表表10.210.2是是DataInputStreamDataInputStream和和DataOutputStreamDataOutputStream類的常用方法類的常用方法 例例10-11 10-11 Example10_11.javaExample10_11.java 例例10-12 10-12 Example10_12.javaExample10_12.java EncryptAndDecrypt.java EncryptAndDecrypt.java 24表表10.2 10.2
28、DataInputStreamDataInputStream及及DataOutputSteamDataOutputSteam類的部分方法類的部分方法 2510.9 對象流對象流 ObjectInputStream和和ObjectOutputStream類類創(chuàng)建的對象創(chuàng)建的對象稱為對象輸入流和對象輸出流。稱為對象輸入流和對象輸出流。 它的構(gòu)造方法是:它的構(gòu)造方法是: ObjectInputStream(InputStream in) ObjectOutputStream(OutputStream out) 相關(guān)方法:相關(guān)方法: writeObject(Object obj) 將一個對象將一個對象
29、obj寫入到一個文件寫入到一個文件 readObject() 讀取一個對象到程序中讀取一個對象到程序中 所謂序列化:一個類如果實現(xiàn)了所謂序列化:一個類如果實現(xiàn)了Serializable接口,那么這個接口,那么這個類創(chuàng)建的對象就是所謂序列化的對象。類創(chuàng)建的對象就是所謂序列化的對象。 例例10-13 10-13 TV.java TV.java Example10_13.java Example10_13.java 2610.10 序列化與對象克隆序列化與對象克隆 如果一個如果一個“復(fù)制品復(fù)制品”實體的變化不會引起原對象實實體的變化不會引起原對象實體發(fā)生變化,反之亦然。這樣的復(fù)制品稱為原對象的一體發(fā)
30、生變化,反之亦然。這樣的復(fù)制品稱為原對象的一個克隆對象或簡稱克隆。個克隆對象或簡稱克隆。 一個對象調(diào)用一個對象調(diào)用clone()方法就可以獲取該對象的克隆方法就可以獲取該對象的克隆對象。對象。 對象輸入流通過對象的序列化信息來得到當(dāng)前對象對象輸入流通過對象的序列化信息來得到當(dāng)前對象的一個克隆。的一個克隆。 例例10-13 10-13 TV.java TV.java Example10_13.java Example10_13.java 2710.11 文件鎖文件鎖 FileLockFileLock、FileChannelFileChannel類類處理處理JavaJava提供的文件鎖功能。它們提
31、供的文件鎖功能。它們分別在分別在java.niojava.nio和和java.nio.channelsjava.nio.channels包中。包中。 輸入、輸出流讀寫文件時可以使用文件鎖。輸入、輸出流讀寫文件時可以使用文件鎖。 RondomAccessFile創(chuàng)建的流在讀寫文件時使用文件鎖的步驟創(chuàng)建的流在讀寫文件時使用文件鎖的步驟如下:如下:1 1先使用先使用RondomAccessFileRondomAccessFile流建立指向文件的流對象,該對象流建立指向文件的流對象,該對象的讀寫屬性必須是的讀寫屬性必須是rwrw,例如:例如: RandomAccessFile input= new R
32、andomAccessFile(Example.java,rw);2 2InputInput流調(diào)用方法流調(diào)用方法getChannel()getChannel()獲得一個連接到地層文件的獲得一個連接到地層文件的FileChannelFileChannel對象(信道),例如對象(信道),例如 FileChannel channel=input.getChannel();3 3信道調(diào)用信道調(diào)用tryLock()tryLock()或或lock()lock()方法獲得一個方法獲得一個FileLockFileLock(文件鎖)文件鎖)對象,這一過程也稱作對文件加鎖,例如:對象,這一過程也稱作對文件加鎖,例如: FileLock lock=channel.tryLock(); 例例10-14 10-14 Example10_14.javaExample10_14.java 2810.12 使用使用ScannerScanner解析文件解析文件_1_1 使用使用ScannerScanner類和正則表達式來解析文件。類和正則表達式來解析文件。1 1使用默認分隔標記解析文件使用默認分隔標記解析文件 創(chuàng)建創(chuàng)建ScannerScanner對象,并指向要解析的文件,例如:對象,并指向要解析的文件,例如: File file = new File(hello.java); Scanner sc =
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版工程結(jié)算協(xié)議書范本
- 2024裝修公司的合作協(xié)議
- 周口理工職業(yè)學(xué)院《小學(xué)數(shù)學(xué)解題方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度白酒線上銷售平臺運營合同2篇
- 2024演出團體租賃劇場合同范本
- 二零二五年度物流運輸臨時用工勞動合同3篇
- 二零二五年度環(huán)保項目咨詢與實施合同2篇
- 二零二五年度綠色建筑節(jié)能減排工程墊資合同及評估協(xié)議3篇
- 2024版圖書經(jīng)銷商購銷協(xié)議樣本
- 二零二五年度新能源汽車零部件生產(chǎn)合作協(xié)議2篇
- 承諾函(支付寶)
- FZ/T 81024-2022機織披風(fēng)
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實驗室檢測
- 國鐵橋梁人行道支架制作及安裝施工要點課件
- 領(lǐng)導(dǎo)科學(xué)全套精講課件
- 粵教版地理七年級下冊全冊課件
- 小學(xué)科學(xué)蘇教版六年級上冊全冊精華知識點(2022新版)
- 萎縮性胃炎共識解讀
- 2022版義務(wù)教育語文課程標準(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
評論
0/150
提交評論