Java程序設計案例教程(第2版)課件 單元10 輸入輸出(IO) 流_第1頁
Java程序設計案例教程(第2版)課件 單元10 輸入輸出(IO) 流_第2頁
Java程序設計案例教程(第2版)課件 單元10 輸入輸出(IO) 流_第3頁
Java程序設計案例教程(第2版)課件 單元10 輸入輸出(IO) 流_第4頁
Java程序設計案例教程(第2版)課件 單元10 輸入輸出(IO) 流_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1.File的基本概念2.操作文件/目錄3.文件/目錄屬性10.1File簡介(IO)流輸入輸出Java語言程序設計Unit101.File的基本概念

代表了磁盤文件本身的對象,提供了一些操作文件的方法,并且這些操作與平臺無關。

而我們所說的文件代表了程序、文本、圖像、視頻等系列文件,也包括文件夾(目錄)。File類功能

通過調用File類的方法,能夠完成創(chuàng)建、刪除、重命名文件,判斷文件的各項屬性,設置和查詢文件的最近修改時間等操作。

1.File的基本概念方式一:File(Stringpathname)File實例創(chuàng)建方式二:File(Stringparent,Stringchild)方式三:File(Fileparent,Stringchild)通過將給定路徑名字符串轉換為抽象路徑名來創(chuàng)建一個新File實例。如:Filefile1=newFile("e:\\demo\\a.txt");根據parent路徑名字符串和child路徑名字符串創(chuàng)建一個新File實例。如:Filefile2=newFile("e:\\demo","a.txt");根據parent抽象路徑名和child路徑名字符串創(chuàng)建一個新File實例。如:Filefile3=newFile("e:\\demo");Filefile4=newFile(file3,“a.txt”)

;2.操作文件/目錄

由于File類只是文件和目錄的抽象表示形式,因此在上述方式創(chuàng)建File對象的實例中,該實例對象不一定真實存在。而新文件/目錄的創(chuàng)建需要我們去執(zhí)行創(chuàng)建的方法。針對文件的創(chuàng)建,調用createNewFile()方法,而針對目錄則調用的是mkdir()。如:Filefile1=newFile("e:\\demo");File1.mkdir();//創(chuàng)建目錄,若已經存在則不創(chuàng)建Filefile2=newFile("e:\\demo","a.txt");

file2.createNewFile();//創(chuàng)建文件,若已經存在則不創(chuàng)建1文件和目錄的創(chuàng)建2.操作文件/目錄

刪除文件或者目錄,需注意的是若要刪除一個文件夾,請確保該文件夾內不能包含文件或者文件夾,并且默認情況下,刪除的文件/目錄是不走回收站的。調用delete()方法刪除文件的前提是該文件必須是存在的,才會返回true表示刪除成功。如:file.delete();2文件和目錄的刪除2.操作文件/目錄

在文件的重命名中,renameTo(Filedest)方法中所需的參數為File的文件對象,區(qū)分為兩種情況:方式一是目錄不變只改文件名,方式二是目錄或文件名都發(fā)生變化,這兩種情況都可以通過該方法來實現。因此,該方法不僅能重命名文件名,還能實現文件的剪切復制功能。如:Filefile1=newFile("zjjm.jpg");FilefileNew1=newFile("浙江經貿.jpg");//方式一file1.renameTo(fileNew1);FilefileNew2=newFile("e:\\浙江經貿.jpg");//方式二File1.renameTo(fileNew2);

1文件和目錄重命名3.文件/目錄屬性File定義了很多獲取File對象標準屬性的方法,如文件的可讀、可寫、隱藏等屬性,我們可以通過封裝的方法去驗證文件對象的屬性,然而不一定有相應的方法來修改這些屬性。3.文件/目錄屬性

獲取文件的各項屬性知識應用浙江經貿職業(yè)技術學院案例

10-2單元10輸入輸出(IO)流文件與目錄案例單元Java語言程序設計主講周芳妃eclipseeclipseeclipse案例

10-2:文件與目錄案例目標用戶創(chuàng)建讀寫文本文件類FileUtils,實現對目錄和文件的基本操作。案例解釋在類中實現兩個方法,對文件和目錄進行判斷是否存在,存在則執(zhí)行相應的操作,不存在則創(chuàng)建該文件。案例效果案例

10-2:文件與目錄實現思路基本步驟按實訓要求創(chuàng)建工程并配置環(huán)境創(chuàng)立File文件操作類,構建空參構造器。創(chuàng)建dirsOperate操作方法 public

voiddirsOperate(StringdirPath){}創(chuàng)建fileOperate方法

publicvoidfileOperate(Stringfilename){}在測試類中創(chuàng)建實例并驗證。10.3.1JavaI/O技術概述10.3.2JavaI/O流分類10.3JavaI/O流浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.3.1JavaI/O技術概述“流”,是一種數據傳輸的抽象描述,是用來連接數據傳輸的起點和終點,是與具體的設備無關的一種中間介質。通過處理輸入、輸出操作,實現從文件中或鍵盤上讀寫數據,以及與屏幕、打印機等設備的數據轉換和傳輸。10.3.1JavaI/O技術概述流的基本特點(1)流不依賴于設備,但是“流”的方向卻與設備有一定關聯,輸入輸出不是從設備的角度考慮,而是從程序的角度出發(fā)。從外部設備到程序稱為數據的“輸入”,從程序到外部設備稱為“輸出”。(2)“流”作為數據傳輸的管道,可以互相嵌套,以提高處理數據的效率。比如,頻繁的讀寫操作會降低流處理過程中的運行效率,則可以通過在現有流的基礎上加入“緩沖流”來提高程序的效率和功能。10.3.1JavaI/O技術概述10.3.2JavaI/O流分類10.3JavaI/O流浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.3.2JavaI/O流分類InputStreamOutputStreamReaderWriter1243Java的輸入輸出流都是建立在四個抽象類的基礎上10.3.2JavaI/O流分類輸入流(Input)是外部源向程序提供數據,也就是讀取數據。輸出流(output)是由程序向外部目的地提供數據傳輸,也就是寫出數據。根據流中的數據傳輸方向10.3.2JavaI/O流分類字節(jié)流

字節(jié)流以字節(jié)為傳輸單位,可以處理文本、視頻、圖像等所有的文件。根據流向又可分為字節(jié)輸入流、字節(jié)輸出流。字符流

字符流以字符為傳輸單位,為了操作文本數據而提供的一種方式。根據流向又可分為字符輸入流和字符輸出流。根據流的數據類型10.3.2JavaI/O流分類節(jié)點流

節(jié)點流直接建立在輸入輸出設備上。處理流

處理流則可以在以某一個節(jié)點作為流的來源的同時,對數據進行操作處理。根據流的建立方式和工作原理浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.4.1InputStream與OutputStream10.4.2FileInputStream與FileOutputStream10.4.3ByteArrayInputStream與ByteArrayOutputStream10.4字節(jié)流10.4.1InputStream與OutputStream

InputStream和OutputStream針對字節(jié)流而設計,位于所有字節(jié)流的頂層,定義了所有字節(jié)流類通用的基本功能。

字節(jié)流可以處理任何類型的對象,更適合操作圖像、視頻等二進制對象文件,而在操作字符和字符串時,建議使用字符流。10.4.1InputStream與OutputStream1InputStream(輸入字節(jié)流)方法描述intavailable()返回當前可讀取的輸入字節(jié)數voidmark(intreadlimit)在此輸入流中標記當前的位置,該標記在讀入readlimit個字節(jié)之前一直有效booleanmarkSupported()測試此輸入流是否支持mark

和reset

方法intread()從輸入流中讀取數據的下一個字節(jié),以整數表示。當到達文件末尾時則返回-1intread(byte[]b)從輸入流中讀取b.length個字節(jié),并將其存儲在緩沖區(qū)數組b

中。當到達文件末尾時則返回-1intread(byte[]b,intoff,intlen)嘗試讀取len個字節(jié)到b中,從b[off]開始保存讀取的字節(jié)。該方法返回成功讀取的字節(jié)數,當到達文件末尾時返回-1voidreset()將此流重新定位到最后一次對此輸入流調用mark方法時的位置longskip(longn)跳過和丟棄此輸入流中數據的n個字節(jié)voidclose()關閉輸入源,釋放系統(tǒng)資源。如果試圖繼續(xù)進行讀取會引發(fā)IOException異常InputStream定義了一個抽象的Java字節(jié)輸入流類,該類大部分的方法在出錯條件下都會觸發(fā)一個IOException異常。InputStream類定義的方法如下表所示:10.4.1InputStream與OutputStream2OutputStream(輸出字節(jié)流)方法描述intflush結束輸出狀態(tài),清空所有緩沖區(qū)voidwrite(intb)向輸出流中寫入n個字節(jié)voidwrite(byte[]b)向輸出流中寫入一個完整的字節(jié)數組voidwrite(byte[]b,intoff,intlen)將指定byte數組中從偏移量off

開始的len

個字節(jié)寫入此輸出流voidclose()關閉輸出流,釋放系統(tǒng)資源。如果試圖繼續(xù)向流中寫入內容會引發(fā)IOException異常OutputStream定義了一個抽象的Java字節(jié)輸出流類,該類大部分的方法都返回void,并在出錯條件下都會觸發(fā)一個IOException異常。OutputStream類定義的方法如下表所示:浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.4.1InputStream與OutputStream10.4.2FileInputStream與FileOutputStream10.4.3ByteArrayInputStream與ByteArrayOutputStream10.4字節(jié)流10.4.2FileInputStream與FileOutputStreamFileInputStream類和FileOutputStream類是處理文件的字節(jié)型節(jié)點流,繼承了InputStream和OutputStream基類的功能。

一般在進行文件字節(jié)流操作時,可以按照三步走的方式進行:(1)創(chuàng)建字節(jié)流對象(2)進行字節(jié)的讀寫操作(3)關閉流10.4.2FileInputStream與FileOutputStream1FileIntputStreamFileInputStream使用FileInputStream類創(chuàng)建的InputStream對象可以用于從文件讀取字節(jié)到程序,哪些文件可用取決于主機環(huán)境。常用的構造方法FileInputStream(Stringname)FileInputStream(Filefile)10.4.2FileInputStream與FileOutputStream如://FileInputStreamfis=newFileInputStream("a.txt"); FileInputStreamfis=newFileInputStream(newFile("a.txt"));intby=0; while((by=fis.read())!=-1) System.out.print((char)by); fis.close();1FileIntputStream10.4.2FileInputStream與FileOutputStream2FileOutputStreamFileOutputStream

FileOutputStream是抽象類OutputStream類的子類,繼承了其所有的方法,并實現了抽象方法write(),可以向磁盤文件中寫入數據。FileOutputStream對象的創(chuàng)建不依賴于已經存在的文件,當創(chuàng)建對象時,FileOutputStream會在打開文件之前創(chuàng)建文件,但是若試圖打開的文件是只讀的,則會拋出異常。10.4.2FileInputStream與FileOutputStream2FileOutputStream常用的構造方法FileOutputStream(Stringname):創(chuàng)建一個向具有指定名稱的文件中寫入數據的文件輸出流。FileOutputStream(Filefile):創(chuàng)建一個向指定File對象表示的文件寫入數據的文件輸出流。FileOutputStream(Stringname,booleanappend)FileOutputStream(Filefile,booleanappend)append如果為true,即可追加,表示將字節(jié)寫入文件末尾處。10.4.2FileInputStream與FileOutputStream2FileOutputStream如://FileOutputStreamfos=newFileOutputStream("fos.txt"); Filefile=newFile("fos.txt"); FileOutputStreamfos=newFileOutputStream(file); fos.write("Hello,World".getBytes()); fos.close();浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.4.1InputStream與OutputStream10.4.2FileInputStream與FileOutputStream10.4.3ByteArrayInputStream與ByteArrayOutputStream10.4字節(jié)流10.4.3ByteArrayInputStream與ByteArrayOutputStream1ByteArrayInputStream構造函數ByteArrayInputStream(byte[]b):參數b是一個字節(jié)數組來提供數據源ByteArrayInputStream(byte[]b,intoffset,intlength):表示從字節(jié)數組的子集創(chuàng)建ByteArrayInputStream對象,使用b作為其緩沖區(qū)數組,子集從offset指定的索引位置開始,共length個字節(jié)。ByteArrayInputStream實現了使用字節(jié)數組作為源的輸入流。如:byte[]b="woaibeijingtiananmen".getBytes();ByteArrayInputStreambais=newByteArrayInputStream(b);ByteArrayInputStreambais2=newByteArrayInputStream(b,3,5);}10.4.3ByteArrayInputStream與ByteArrayOutputStream2ByteArrayOutputStream構造函數ByteArrayOutputStream()ByteArrayOutputStream(intsize)ByteArrayOutputStream實現了使用字節(jié)數組作為目標的輸出流。如:實現將“woaibeijingtiananmen”寫入文件byte[]b="woaibeijingtiananmen".getBytes();FileOutputStreamfos=newFileOutputStream("baos.txt");ByteArrayOutputStreambaos=newByteArrayOutputStream();baos.write(b);baos.writeTo(fos);浙江經貿職業(yè)技術學院案例

10-5單元10輸入輸出(IO)流復制圖片案例單元Java語言程序設計主講周芳妃eclipseeclipseeclipse案例

10-5:復制圖片案例目標基于字節(jié)流的讀寫操作,實現圖片的復制。案例解釋

圖片是一種以字節(jié)方式存儲的數據類型,利用字節(jié)輸入流和字節(jié)輸出流實現將工程項目文件下的圖片文件復制到D盤下,并修改文件名稱案例效果案例

10-5:復制圖片實現思路基本步驟按實訓要求創(chuàng)建工程并配置環(huán)境創(chuàng)建圖片文件操作類創(chuàng)建圖片復制方法根據src確定要復制的圖片文件根據dest確定復制目的地判斷源圖像文件是否存在若存在則復制,不存在則提示信息驗證測試浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.6.1Reader與Writer10.6.2InputStreamReader與OutputStreamWriter10.6.3BufferedReader與BufferedWriter10.6字符流10.6.1Reader與WriterFilterReaderPushBackReader字符輸入/輸出類字符輸入流的類層次關系字符輸出流的類層次關系10.6.1Reader與Writer方法描述intread()從輸入流中讀取數據的一個字符,以int類型的形式返回。當到達文件末尾時則返回-1intread(char[]b)從輸入流中讀取字符,并將其存儲在char型數組緩沖區(qū)b

中,返回的是讀取的字符個數intread(char[]b,intoff,intlen)嘗試讀取len個字符并存入到b中,從b[off]開始保存讀取的字符,返回成功讀取的字節(jié)數,當到達文件末尾時返回-1booleanready()如果下一個輸入請求不等待,則返回truelongskip(longn)跳過和丟棄此輸入流中數據的n個字符,返回實際略過的字符數voidclose()關閉輸入源,釋放系統(tǒng)資源。如果試圖繼續(xù)進行讀取會引發(fā)IOExceptionReader是抽象類,定義了所有字符輸入流應該實現的大部分成員方法。類中提供的常用的成員方法如表所示:10.6.1Reader與Writer方法描述writerappend(charch)將ch追加到調用輸出流的末尾,返回對調用流的引用voidwrite(intch)向輸出流中寫入單個字符voidwrite(char[]b)向輸出流中寫入一個完整的字符數組voidwrite(char[]b,intoff,intlen)將指定byte數組中從偏移量off

開始的len個字符寫入此輸出流abstractvoidclose()關閉輸出流,釋放系統(tǒng)資源。如果試圖繼續(xù)向流中寫入內容會引發(fā)異常abstractvoidflush完成輸出狀態(tài),從而清空所有緩沖區(qū)Writer是抽象類,定義了所有字符輸出流應該實現的大部分成員方法。類中提供的常用的成員方法如表所示:浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.6.1Reader與Writer10.6.2InputStreamReader與OutputStreamWriter10.6.3BufferedReader與BufferedWriter10.6字符流10.6.2InputStreamReader與OutputStreamWriterInputStreamReaderOutputStreamWriter12InputStreamReader和OutputStreamWriter實現了字節(jié)流和字符流之間的轉換可以將一個字節(jié)流中的字節(jié)碼解碼成字符??梢詫懭氲淖址幋a成字節(jié)后寫入一個字節(jié)流。10.6.2InputStreamReader與OutputStreamWriter1InputStreamReaderInputStreamReader使用指定的字符集讀取字節(jié)并將其解碼為字符,可以指定采用的字符集,也可以接受平臺默認的字符集。InputStreamReader類典型的構造方法InputStreamReader(InputStreamin)InputStreamReader(InputStreamin,Charsetcs)10.6.2InputStreamReader與OutputStreamWriter2OutputStreamWriterOutputStreamWriter使用指定的字符集把要向其寫入的字符編碼為字節(jié),可以指定采用的字符集,也可以接受平臺默認的字符集。OutputStreamWriter類典型的構造方法OutputStreamWriter(OutputStreamout)OutputStreamWriter(OutputStreamout,Charsetcs)浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.6.1Reader與Writer10.6.2InputStreamReader與OutputStreamWriter10.6.3BufferedReader與BufferedWriter10.6字符流10.6.3BufferedReader與BufferedWriter當程序與外部設備之間進行讀寫文本或其他數據類型時,如果簡單地通過read()和write()方法進行逐個字節(jié)或字符數據的處理,處理或交換的效率將非常低。

為了提高程序的讀寫效率,Java提供了緩沖流,在內存中設置一個內部緩沖區(qū)用以批量處理數據。

緩沖流都是以“Buffered”開頭的。10.6.3BufferedReader與BufferedWriter1BufferedReaderBufferedReader類通過緩沖輸入提高讀取性能,該類具有兩個常見的構造函數BufferedReader(Readerin):創(chuàng)建一個使用默認大小輸入緩沖區(qū)的緩沖字符輸入流。BufferedReader(Readerin,intsz):創(chuàng)建一個使用指定大小輸入緩沖區(qū)的緩沖字符輸入流,緩沖區(qū)大小由sz指定。構建BufferedReader對象時,必須傳遞一個Reader類型的對象作為參數,如下代碼簡單實現了讀取鍵盤上輸入的一整行字符:BufferedReaderb=newBufferedReader(newInputStreamReader(System.in));Stringstr=b.readLine();10.6.3BufferedReader與BufferedWriter2BufferedWriterBufferedWriter是緩沖輸出字符流,使用BufferedWriter可以通過減少實際向輸出設備寫入數據的次數來提高性能。BufferedWriter具有以下兩個構造函數:BufferedWriter(Writerout)BufferedWriter(Writerout,intsz)通常我們會將OutputStreamWriter包裝到BufferedWriter中以避免頻繁調用,如:BufferedWriterb=newBufferedWriter(newOutputStreamWriter(System.out));浙江經貿職業(yè)技術學院案例

10-7單元10輸入輸出(IO)流讀寫文本文件案例單元Java語言程序設計主講周芳妃eclipseeclipseeclipse案例

10-7:讀寫文本文件案例目標

練習常規(guī)的IO操作,讀取和寫入指定目錄的文本文件并輸出文件內容。案例解釋

實現類TextWriterReader的讀寫功能,實現對某個指定文件的讀取功能,并將讀取的結果返回。實現將指定內容寫入到指定文件的功能,并提示是否寫入成功。案例效果實現思路基本步驟按實訓要求創(chuàng)建工程并配置環(huán)境創(chuàng)建讀寫文本文件類:創(chuàng)建讀取文本文件的方法:創(chuàng)建文本緩存對象,先判斷文件是否有效存在,存在則逐行讀取并存入文本緩存中,不存在則提示信息。創(chuàng)建寫入文本文件的方法:基于指定的目錄創(chuàng)建文件對象,通過流對象把文本寫入指定文件。創(chuàng)建測試類,創(chuàng)建讀寫文本文件類的對象,進行讀取和寫入方法的測試,輸出操作結果案例

10-7:讀寫文本文件10.8操作Properties文件浙江經貿職業(yè)技術學院(IO)流輸入輸出Java語言程序設計Unit10主講周芳妃10.8操作Properties文件Java中的properties文件是一種配置文件,主要用于表達配置信息,文件類型為*.properties,文件的內容格式為“鍵=值”的格式,在properties文件中,可以用“#”來作注釋。properties文件在Java編程中操作方便,其一個很重要的特性是可以和IO流結合使用,將其保存在流中或從流中加載配置文件。10.8操作Properties文件Properties是Hashtable的子類,屬性列表中每個鍵和值都是String類型的。Properties定義了一個實例變量,一個屬性列表,包含屬性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論