javaio中的基本流類-MINGJNU課件_第1頁
javaio中的基本流類-MINGJNU課件_第2頁
javaio中的基本流類-MINGJNU課件_第3頁
javaio中的基本流類-MINGJNU課件_第4頁
javaio中的基本流類-MINGJNU課件_第5頁
已閱讀5頁,還剩139頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第九章Java輸入輸出系統(tǒng)第九章Java輸入輸出系統(tǒng)本章目錄流的基本概念1字節(jié)流2字符流3File類4System.in和System.out對象5FileInputStream類和FileOutputStream類6FileReader類和FileWriter類

7過濾流8文件的隨機訪問9案例分析:多種流的實現(xiàn)102本章目錄流的基本概念1字節(jié)流2字符流3File類4S教學(xué)目標掌握流的基本概念掌握Java中各種常用輸入/輸出流的基本用法能夠熟練地編寫應(yīng)用程序解決文件的讀寫問題。3教學(xué)目標掌握流的基本概念3教學(xué)重點字節(jié)流與字符流的區(qū)別File類的使用過濾流的合理使用文件的隨機訪問操作4教學(xué)重點字節(jié)流與字符流的區(qū)別49.1流的基本概念java.io包:支持流的輸入輸出十分巨大,定義了大約60個類,包含大量方法要了解更多的信息參看API文檔在Java1.3及其以后的版本中,讀寫文件的唯一手段就是使用流。59.1流的基本概念java.io包:59.1流的基本概念流(stream):是輸入和輸出設(shè)備的一種抽象表示,這些設(shè)備是數(shù)據(jù)源或數(shù)據(jù)終點??梢韵蛄髦袑懭霐?shù)據(jù),也可以從流中讀出數(shù)據(jù)。大家可以把流想象為流入自己程序或從自己程序中流出的字節(jié)序列。69.1流的基本概念流(stream):69.1流的基本概念為什么引入流作為的基本輸入輸出操作?讓實現(xiàn)這些操作的程序編碼獨立于所涉及的設(shè)備。這樣做的好處有兩點:不必擔(dān)心各種設(shè)備的具體工作機制,對于它們的管理均在幕后進行。用戶的程序可以適用于各種輸入輸出設(shè)備,改變輸入輸出設(shè)備時不用改寫程序編碼。79.1流的基本概念為什么引入流作為的基本輸入輸出操作?79.1流的基本概念流式輸入輸出的特點每個數(shù)據(jù)都必須等待排在它前面的數(shù)據(jù)讀入或送出之后才能被讀寫;每次讀寫操作處理的都是序列中剩余的未讀寫數(shù)據(jù)中的第一個,而不能隨意選擇輸入輸出的位置。89.1流的基本概念流式輸入輸出的特點89.1流的基本概念文件程序終端文件程序網(wǎng)絡(luò)端點數(shù)據(jù)流起點終點網(wǎng)絡(luò)端點文件,字符串存儲區(qū)99.1流的基本概念文件程序終端文件程序網(wǎng)絡(luò)端點數(shù)據(jù)流起終9.1流的基本概念Java中有兩種基本的流(1)輸入流:打開流→當流中還有數(shù)據(jù)時執(zhí)行讀操作→關(guān)閉流。(2)輸出流:打開流→當有數(shù)據(jù)需要輸出時執(zhí)行寫操作→關(guān)閉流。109.1流的基本概念Java中有兩種基本的流109.1流的基本概念輸出流:從計算機流向外設(shè)的數(shù)據(jù)序列,即把數(shù)據(jù)寫入流時,該流稱為輸出流。輸出流可以通往任何可以傳輸字節(jié)序列的設(shè)備,例如硬盤上的文件,或連接用戶系統(tǒng)至遠程系統(tǒng)的電話線路。輸出流也可以通向顯示器,但這會大大限制其真正的功能。輸入流:從外設(shè)流入計算機的數(shù)據(jù)序列;119.1流的基本概念輸出流:從計算機流向外設(shè)的數(shù)據(jù)序列,即9.1流的基本概念程序輸入流輸出流數(shù)據(jù)數(shù)據(jù)顯示器鍵盤129.1流的基本概念程序輸入流輸出流數(shù)據(jù)數(shù)據(jù)顯示器鍵盤129.1流的基本概念1.輸入流(Inputstream)通過打開一個到數(shù)據(jù)源(文件、內(nèi)存或網(wǎng)絡(luò)端口上的數(shù)據(jù))的輸入流,程序可以從數(shù)據(jù)源上順序讀取數(shù)據(jù)。讀數(shù)據(jù)的邏輯為:openastreamwhilemoreinformationreadinformationclosethestream139.1流的基本概念1.輸入流(Inputstream)9.1流的基本概念2.輸出流(Outputstream)通過打開一個到目標的輸出流,程序可以向外部目標順序?qū)憯?shù)據(jù)149.1流的基本概念2.輸出流(Outputstream9.1流的基本概念2.輸出流(Outputstream)文件,當向其中寫數(shù)據(jù)時,它就是一個輸出流;當從其中讀取數(shù)據(jù)時,它就是一個輸入流。鍵盤只是一個輸入流,屏幕只是一個輸出流。寫數(shù)據(jù)的邏輯為:openastreamwhilemoreinformationwriteinformationclosethestream159.1流的基本概念2.輸出流(Outputstrea9.1流的基本概念另外,根據(jù)流中數(shù)據(jù)單位的不同,可將流分為字節(jié)流和字符流。(1)字節(jié)流:流中數(shù)據(jù)以8位字節(jié)為單元進行讀寫。(2)字符流:流中數(shù)據(jù)以16位字符為單位進行讀寫。169.1流的基本概念另外,根據(jù)流中數(shù)據(jù)單位的不同,可將流分9.1流的基本概念java.io包支持兩種類型的流:字符流類(CharacterStreams)

字符流類用于向字符流讀寫16位二進制字符。字節(jié)流類(ByteStreams)字節(jié)流類用于向字節(jié)流讀寫8位二進制的字節(jié)。一般地,字節(jié)流類主要用于讀寫諸如圖象或聲音等的二進制數(shù)據(jù)。

179.1流的基本概念java.io包支持兩種類型的流:179.1流的基本概念java.io中的基本流類:說明:它們是抽象類,不能直接創(chuàng)建對象。ByteStreamsCharacterStreamsInputStreamReaderOutputStreamWriter189.1流的基本概念java.io中的基本流類:Byte9.2字節(jié)流InputStream類和OutputStream類是字節(jié)流的兩個頂層父類。它們提供了輸入流類與輸出流類的通用API。字節(jié)流一般用于讀寫二進制數(shù)據(jù),例如圖像和聲音數(shù)據(jù)。有兩個字節(jié)流ObjectInputStream和ObjectOutputStream是用來實現(xiàn)對象的串行化,即對象的輸入輸出。199.2字節(jié)流InputStream類和OutputStr9.2字節(jié)流1.InputStream類209.2字節(jié)流1.InputStream類209.2字節(jié)流InputStream類的主要方法read():從流中讀入數(shù)據(jù)skip():跳過流中若干字節(jié)數(shù)available():返回流中可用字節(jié)數(shù)mark():在流中標記一個位置reset():返回標記過的位置

markSupport():是否支持標記和復(fù)位操作

close():關(guān)閉流219.2字節(jié)流InputStream類的主要方法219.2字節(jié)流InputStreamAudioInputStreamFileInputStreamObjectInputStreamSequenceInputStreamByteArrayInputStreamPipedInputStreamFilterInputStream用于讀取音頻數(shù)據(jù)用于讀取文件中的數(shù)據(jù)用于讀取流中的對象用于讀取流序列用于讀取字節(jié)數(shù)組用于讀取管道流用于過濾現(xiàn)有流的輸入229.2字節(jié)流InputStreamAudioInputS9.2字節(jié)流FilterInputStream類有9個直接子類,它們提供對輸入流數(shù)據(jù)過濾或轉(zhuǎn)換的更多的特殊方式。BufferedInputStreamDataInputStreamCheckedInputStreamCipherInputStreamDigestInputStreamInflaterInputStreamLineNumberInputStreamProgressMonitorInputStreamPushbackInputStream239.2字節(jié)流FilterInputStream類有9個直輸9.2字節(jié)流BufferedInputStream把流包裝到BufferedInputStream對象中的效果是將基本數(shù)據(jù)流緩沖入內(nèi)存,使得一次可以從流中讀入大塊數(shù)據(jù)(其最大值取決于緩沖區(qū)的大小),然后讓read方法可以直接從內(nèi)存緩沖區(qū)中讀取數(shù)據(jù),當緩沖區(qū)為空時,僅從基本數(shù)據(jù)流執(zhí)行一次真正的讀操作。BufferedInputStreamkeyboard=newBufferedInputStream(System.in);24輸9.2字節(jié)流BufferedInputStreamBu9.2字節(jié)流2.OutputSteam類259.2字節(jié)流2.OutputSteam類259.2字節(jié)流write(intb):將一個整數(shù)輸出到流中(只輸出低位字節(jié),為抽象方法)write(byteb[]):將字節(jié)數(shù)組中的數(shù)據(jù)輸出到流中write(byteb[],intoff,intlen):將數(shù)組b中從off指定的位置開始,長度為len的數(shù)據(jù)輸出到流中flush():刷空輸出流,并將緩沖區(qū)中的數(shù)據(jù)強制送出close():關(guān)閉流269.2字節(jié)流write(intb):將一個整數(shù)輸出到流9.2字節(jié)流OutputStreamFileOutputStreamObjectOutputStreamByteArrayOutputStreamPipedOutputStreamFilterOutputStream用于向文件寫用于將對象寫入流用于向字節(jié)數(shù)組寫用于向流管道寫用于過濾現(xiàn)有流的輸出279.2字節(jié)流OutputStreamFileOutput9.3字符流字符流能夠處理Unicode字符集中所有的字符,而字節(jié)流限于處理ISO-Latin-1的8位字節(jié)字符流采用了統(tǒng)一的編碼標準,可國際化使用字符流來讀寫文本類數(shù)據(jù)。Reader類和Writer類是java.io包中兩個字符流類的頂層抽象父類。289.3字符流字符流能夠處理Unicode字符集中所有的9.3字符流Reader和Writer都是抽象類。Reader和Writer對象通常使用InputStream或OutputStream對象來創(chuàng)建InputStream或OutputStream對象封裝了與最終數(shù)據(jù)源或數(shù)據(jù)終點這種外設(shè)的連接。299.3字符流Reader和Writer都是抽象類。299.3字符流ReaderInputStreamReaderBufferedReaderPipedReaderCharArrayReaderStringReader用于讀取字符流用于緩沖其他Readers類用于讀取PipedWriter用于讀取字符數(shù)組用于讀取字符串FilterReader用于讀取過濾后的流309.3字符流ReaderInputStreamRead9.3字符流用于像讀取字符流一樣讀取二進制輸入流的具體類是InputStreamReader。InputStreamReader類定義了3種read()方法,這些方法將從基本流中讀取一個或多個字節(jié),并且使用默認轉(zhuǎn)換方式將它們由本地字符編碼轉(zhuǎn)換為Unicode碼后,再將它們返回。InputStreamReaderkeyboard=newInputStreamReader(System.in);319.3字符流用于像讀取字符流一樣讀取二進制輸入流的具體如果使用BufferedReader對象來緩沖數(shù)據(jù)流,則讀取工作的效率會有所提高。CharArrayReader對象創(chuàng)建于數(shù)組,并且允許用戶從數(shù)組讀取數(shù)據(jù),就像是從字符輸入流中讀取數(shù)據(jù)一樣。StringReader對象類實質(zhì)上做相同的事情,只是處理的是String對象。9.3字符流BufferedReaderkeyboard=newBufferedReader(newInputStreamReader(System.in));32如果使用BufferedReader對象來緩沖數(shù)據(jù)流,則讀取9.3字符流WriterOutputStreamWriterBufferedWriterPipedWriterCharArrayWriterStringWriter用于寫字符流用于緩沖其他Writers類用于向PipedReader寫用于向字符數(shù)組寫用于向字符串寫PrintWriter用于寫格式化數(shù)據(jù)FilterWriter用于寫過濾后的流339.3字符流WriterOutputStreamWriOutputStreamWriter類將字符寫入基本二進制流中,它有一個子類FileWriter,F(xiàn)ileWriter將字符寫入封裝文件的流。PrintWriter類與打印沒有什么聯(lián)系。PrintWriter類定義了用于將二進制數(shù)格式化為字符,并且把它寫入數(shù)據(jù)流的方法。StringWriter類與CharArrayWriter類是用于將字符數(shù)據(jù)寫入StringBuffer對象或char[]型數(shù)組。通常這些類用來執(zhí)行數(shù)據(jù)轉(zhuǎn)換,使得轉(zhuǎn)換結(jié)果可以從基礎(chǔ)數(shù)組或字符串中得到。9.3字符流34OutputStreamWriter類將字符寫入基本二進制流9.3字符流注意:PrintWriter對象所作的格式化無助于讓輸出行中的各項內(nèi)容按列對齊排列。如果希望產(chǎn)生特定的格式輸出,必須自己去編寫代碼。StringWriterstrWriter=newStringWriter();PrintWriterwriter=newPrintWriter(strWriter);doublevalue=2.71828;writer.println(value);StringBufferstr=strWriter.getBuffer();359.3字符流注意:PrintWriter對象所作的格式9.4File類File類功能:得到文件或目錄的描述信息,包括文件名稱、所在目錄、可讀性、可寫性、長度和文件的最后修改時間等可以生成新的目錄改變文件名刪除文件列出一個目錄中所有的文件或與某個模式相匹配的文件等。369.4File類File類功能:369.4File類File類的構(gòu)造方法:(1)publicFile(Stringpath)參數(shù)path是包含目錄和文件名的字符串,Java把目錄看作一種特殊的文件,因此該字符串可以沒有文件名,這時若調(diào)用方法isFile()將返回false,說明File對象是目錄而不是文件。(2)publicFile(Stringpath,Stringname)path是目錄路徑(父目錄),name可包含目錄和文件名(相對于父目錄)。(3)publicFile(Filedir,Stringname)dir是一個文件對象(父目錄),child可包含目錄和文件名(相對于父目錄)。379.4File類File類的構(gòu)造方法:379.4File類File類的構(gòu)造方法:(1)publicFile(Stringpath)參數(shù)path是包含目錄和文件名的字符串,Java把目錄看作一種特殊的文件,因此該字符串可以沒有文件名,這時若調(diào)用方法isFile()將返回false,說明File對象是目錄而不是文件。(2)publicFile(Stringpath,Stringname)path是目錄路徑(父目錄),name可包含目錄和文件名(相對于父目錄)。(3)publicFile(Filedir,Stringname)dir是一個文件對象(父目錄),child可包含目錄和文件名(相對于父目錄)。389.4File類File類的構(gòu)造方法:38例如:Filef1=newFile("D:/Java");Filef2=newFile("D:/Java","test.txt");Filef3=newFile(f1,"test.txt");Filef4=newFile("file:///D:/Java/test.txt")9.4File類39例如:9.4File類399.4File類方法說明publicStringgetName()返回文件名。publicStringgetPath()返回文件路徑。publicStringgetAbsolutePath()返回文件絕對路徑。publicStringgetParent()返回文件的父目錄。publicbooleanexists()判斷文件是否存在。publicbooleancanWrite()判斷文件是否可寫。publicbooleancanRead()判斷文件是否可讀。publicbooleanisFile()判斷對象是否是文件。publicbooleanisDirectory()判斷對象是否是目錄。publicnativebooleanisAbsolute()如果文件名為絕對名,則返回真。409.4File類方法說明publicS9.4File類方法說明publiclonglastModified()返回文件最后修改時間。publiclonglength()返回文件長度。publicbooleanmkdir()創(chuàng)建目錄。publicbooleanrenameTo(Filedest)重命名文件。publicbooleanmkdirs()創(chuàng)建目錄及子目錄。publicString[]list()列出目錄下的所有文件和目錄。publicString[]list(FilenameFilterfilter)列出目錄下的指定文件。publicbooleandelete()刪除文件對象。publicinthashCode()為文件創(chuàng)建散列代碼。publicbooleanequals(Objectobj)判斷是否同對象obj相等。publicStringtoString()返回文件對象的字符串描述。419.4File類方法說明publicl9.4File類【例9-1】輸入一個文件名,顯示該文件的相關(guān)屬性信息。importjava.io.*;publicclassFileClass{publicstaticvoidmain(String[]args) {System.out.println("enterfilename:");charc;StringBufferbuf=newStringBuffer(); try{ while((c=(char)System.in.read())!='\n') buf.append(c); //將輸入的字符加到buf中,以回車符結(jié)尾

}catch(java.io.IOExceptione){ System.out.println("Error:"+e.toString()); } Filefile=newFile(buf.toString().trim()); //創(chuàng)建File類的file對象

if(file.exists()){ //如果文件在當前目錄存在

System.out.println("FileName:"+file.getName());//顯示文件的文件名

System.out.println("path:"+file.getPath());//顯示文件的路徑

System.out.println("Abs.path:"+file.getAbsolutePath());//顯示文件的絕對路徑

System.out.println("Writeable:"+file.canWrite());//顯示文件是否可寫

System.out.println("Readlable:"+file.canRead());//顯示文件是否可讀

System.out.println("Length:"+(file.length())+"B");//顯示文件的大小} else//如果文件不在當前目錄

System.out.println("Sorry,filenotfound.");//顯示文件沒有找到的提示消息

}}429.4File類【例9-1】輸入一個文件名,顯示該文件的9.5System.in和System.out對象標準輸入輸出指在字符方式下程序與系統(tǒng)進行交互的方式,分為以下3種:(1)標準輸入stdin,對象是鍵盤。(2)標準輸出stdout,對象是屏幕。(3)標準錯誤輸出stderr,對象也是屏幕。Java通過系統(tǒng)類System實現(xiàn)標準輸入輸出的功能,定義了3個流變量,分別為in、out和err??梢灾苯油ㄟ^System類進行調(diào)用。439.5System.in和System.out對象標準9.5System.in和System.out對象1.標準輸入

read()方法:這個方法在InputStream類中是抽象的,因此它必須定義在子類中。此方法以int型返回流的下一個可讀字節(jié)。如果到達流的末尾,則方法的返回值為-1。如果I/O發(fā)生錯誤,將拋出IOException類型的異常。449.5System.in和System.out對象1.9.5System.in和System.out對象2.標準輸出Java的標準輸出System.out是打印輸出流PrintStream類的對象。PrintStrearn類定義了在屏幕上顯示不同類型數(shù)據(jù)的方法print()和println()。(1)println()方法println()方法可輸出多種不同類型的變量或?qū)ο螅╞oolean、double、float、int、long、char、字符數(shù)組以及Object類型的對象。(2)print()方法print()方法輸出后不換行459.5System.in和System.out對象2.9.5System.in和System.out對象【例9-2】輸入一個字符,在屏幕上顯示該字符。importjava.io.*;publicclassCharInput1{ publicstaticvoidmain(String[]args)throwsIOException{ //必須做異常處理

inta; try{ System.out.print("請輸入一個字符:"); a=System.in.read(); System.out.println("你輸入的字符是"+(char)a); }catch(IOExceptione){ System.out.println("錯誤信息為:"+e.toString()); }}}469.5System.in和System.out對象【例9.5System.in和System.out對象【例9-3】輸入一行字符,在屏幕上顯示該行字符。importjava.io.*;publicclassCharInput2{ publicstaticvoidmain(String[]args){ bytebuffer[]=newbyte[255]; System.out.println("請在下面輸入一行字符:"); try{

System.in.read(buffer,0,255);

//System.in.read拋出異常 }catch(Exceptione){

//捕獲異常并處理

System.out.println("讀取輸入字符出錯,錯誤信息為:"+e.toString()); }

System.out.println("您剛才輸入的一行字符為:");

StringinputStr=newString(buffer);

System.out.println(inputStr); }}479.5System.in和System.out對象【例1.FilelnputStreamFilelnputStream用于順序訪問本地文件,從超類繼承read()、close()等方法對文件進行操作,不支持mark()方法和reset()方法。構(gòu)造方法:(1)FilelnputStream(Stringfilepath)(2)FilelnputStream(Filefileobj)例:FilelnputStreamf1=newFilelnputStream("aa.Java")Filef=newFile("aa.Java")FilelnputStreamf2=newFilelnputStream(f);9.6FileInputStream類和FileOutputStream類481.FilelnputStream9.6FileInp9.6FileInputStream類和FileOutputStream類方法說明intavailable()返回可讀入的字節(jié)數(shù)。voidclose()關(guān)閉輸入流,并釋放任何與該流有關(guān)的資源。protectedvoidfinalize()當讀到無用信息時,關(guān)閉該流。FileDescriptorgetFD()返回與該流有關(guān)的文件描述符(即文件的完整路徑)。intread()從輸入流中讀取一個字節(jié)的數(shù)據(jù)。intread(byte[]b)將數(shù)據(jù)讀入到一個字節(jié)數(shù)組b[]中。intread(byte[]b,intoff,intlen)將len個字節(jié)的數(shù)據(jù)讀入到一個字節(jié)型數(shù)組b[]中,從下標off開始存放,并返回實際讀入的字節(jié)數(shù)。longskip(longn)跳過輸入流上的n個字節(jié)。499.6FileInputStream類和FileOutp2.FileOutputStream

Fileoutputstream用于向一個文本文件寫數(shù)據(jù)。它從超類中繼承write()、close()等方法。構(gòu)造方法:(1)FileOutputStream(Stringfilepath)(2)FileOutputStream(Filefileobj)(3)FileOutputStream(Stringfilepath,booleanappend)(4)FileOutputStream(Filefileobj,booleanappend)9.6FileInputStream類和FileOutputStream類502.FileOutputStream9.6FileI9.6FileInputStream類和FileOutputStream類方法說明voidclose()關(guān)閉輸出流,并釋放任何與該流有關(guān)的資源。voidfinalize()當寫到無用信息時,關(guān)閉該流。voidwrite(intb)將字節(jié)數(shù)據(jù)b[]寫到輸出流中。voidwrite(byte[]b)將一個字節(jié)數(shù)組b[]中的數(shù)據(jù)寫到輸出流中。longskip(longn)跳過輸出流上的n個字節(jié)。519.6FileInputStream類和FileOutp文件字節(jié)流【例9-4】建立兩個文件file1.txt和file2.txt,對文件file1.txt輸入內(nèi)容“HelloWorld!”,并將其內(nèi)容復(fù)制給file2.txt。importjava.io.*;classFilesCopy{publicstaticvoidmain(String[]args) {try{FileOutputStreamfos1=newFileOutputStream("file1.txt");//創(chuàng)建FileOutputStream對象

intb; System.out.println("請輸入字符串:");while((b=System.in.read())!='\n')fos1.write(b); //將字符寫入到輸出流中

fos1.close(); //關(guān)閉輸出流

FileInputStreamfis=newFileInputStream("file1.txt");//創(chuàng)建FileInputStream對象

FileOutputStreamfos=newFileOutputStream("file2.txt");//創(chuàng)建FileOutputStream對象

intc;while((c=fis.read())!=-1) fos.write(c); //將一個字節(jié)寫入到輸出流中

fis.close(); //關(guān)閉輸入流

fos.close(); //關(guān)閉輸出流

System.out.println("成功保存并復(fù)制!");}catch(FileNotFoundExceptione){ System.out.println("FileStreamsTest:"+e);}catch(IOExceptione){ System.out.println("FileStreamsTest:"+e);}}}52文件字節(jié)流【例9-4】建立兩個文件file1.txt和fiFileReader類是一個以字符方式讀取文件內(nèi)容的Reader類的子類,最常用構(gòu)造方法:FileReader(StringfilePath)FileReader(Filefileobj)FileWriter類是一個以字符方式寫文件內(nèi)容的Writer類的子類,最常用構(gòu)造方法如下:FileWriter(StringfilePath)FileWriter(StringfilePath,booleanappend)FileWriter(Filefileobj)9.7FileReader類和FileWriter類53FileReader類是一個以字符方式讀取文件內(nèi)容的Rea9.8過濾流Java對I/O訪問還提供了同步處理機制,這就是過濾流。保證某時刻只有一個線程訪問一個I/O流。過濾流主要是由FilterInputStream和FilterOutputStream抽象類實現(xiàn),由這兩個抽象類可以派生出一些過濾子類,重寫父類FilterInputStream和FilterOutputStream的所有方法。549.8過濾流Java對I/O訪問還提供了同步處理機制,這9.8過濾流例如,BufferedInputStream可以對任何種類的輸入流進行帶緩沖區(qū)的封裝以達到性能的改善(可減少程序I/O操作次數(shù),提高程序執(zhí)行效率)。過濾流與節(jié)點流的連接是通過在過濾流的構(gòu)造方法中指定入口參數(shù),即節(jié)點流來實現(xiàn)的。例如:FileInputStreamin=newFileInputStream(“text”);BufferedInputStreambufin=newBufferedInputStream(in);首先把過濾流連接到某個I/O上,再通過構(gòu)造方法的參數(shù)去指定連接的I/O流。559.8過濾流例如,BufferedInputStream9.8過濾流BufferedInputStream類/BufferedOutputStream類為了提供數(shù)據(jù)的傳輸效率,為一個流配備緩沖區(qū)(buffer),成為緩沖流。緩沖流輸入輸出是一個非常普通的性能優(yōu)化。BufferedInputStream類構(gòu)造方法:(1)publicBufferedInputStream(InputStreamin)(2)publicBufferedInputStream(InputStreamin,intsize)BufferedOutputStream類構(gòu)造方法:(1)publicBufferedOutputStream(OutputStreamout)(2)publicBufferedOutputStream(OutputStreamout,intsize)569.8過濾流BufferedInputStream類/B9.8過濾流DataInputStream類和DataOutputStream類DataInputStream:從已定義的節(jié)點輸入流中讀取Java基本數(shù)據(jù)類型的數(shù)據(jù),如布爾型數(shù)、整型數(shù)、浮點數(shù)等,再生成一個數(shù)據(jù)輸入流。DataOutputStream:將Java基本數(shù)據(jù)類型數(shù)據(jù)寫到一個數(shù)據(jù)輸出流中。構(gòu)造方法如下:(1)pubilcDataInputStream(InputStreamin):創(chuàng)建一個新的DataInputStream,該流從輸入流in讀取數(shù)據(jù)。(2)pubilcDataOutputStream(OutputStreamout):在輸出流out上創(chuàng)建一個新的DataOutputStream,使DataOutputStream的輸出數(shù)據(jù)能夠輸出到輸出流out中。579.8過濾流DataInputStream類和DataO9.8過濾流DataInputStream類提供的讀取數(shù)據(jù)的部分方法如下:bytereadByte() booleanreadBoolean()doublereadDouble()floatreadFloat()charreadChar()shortreadshort() longreadLong() intreadInt()589.8過濾流DataInputStream類提供的讀取數(shù)9.8過濾流DataOutputStream類包含與DataInputStream類讀方法相對應(yīng)的寫方法,部分方法如下:voidwriteByte(byte) voidwriteBoolean(boolean)voidwriteLong(long) voidwriteChar(char)voidwriteDouble(double) voidwriteFloat(float)voidwriteshort(short) voidwriteInt(int)voidwriteBytes(String)voidwriteChars(String)599.8過濾流DataOutputStream類包含與Da9.8過濾流【例9-5】使用過濾緩沖輸出流提高輸出效率。importjava.io.*;publicclassBufferDemo{ publicstaticvoidmain(String[]args){ try{ byteb[]={49,50,51,52,53,,5,66,67,68,69,97,98,99,100,101}; FileOutputStreamfos=newFileOutputStream("one.dat",true); BufferedOutputStreambos=newbufferedOutputStream(fos); //定義一個數(shù)據(jù)緩沖輸出流DataOutputStreamdos=newDataOutputStream(bos); //將字節(jié)數(shù)組的數(shù)據(jù)輸出到緩沖區(qū) dos.write(b,0,b.length);

dos.flush();} Catch(IOExceptione){ System.out.println(e.toString()); } } }609.8過濾流【例9-5】使用過濾緩沖輸出流提高輸出效率。RandomAccessFile類可實現(xiàn)對文件的隨機讀寫操作。在Java.io包中,但與包中的輸入/輸出流類不相關(guān),它不是從InputStream類或OutputStream類派生的。實現(xiàn)了Datalnput和Dataoutput接口,支持這兩個接口的過濾器將適用于RandomAccessFile9.9文件的隨機訪問61RandomAccessFile類9.9文件的隨機訪問61.構(gòu)造方法RandomAccessFile類提供兩個構(gòu)造方法:(1)publicRandomAccessFile(Stringname,Stringmode)throwsFileNotFoundException(2)publicRandomAccessFile(Filefile,Stringmode)throwsFileNotFoundException9.9文件的隨機訪問621.構(gòu)造方法9.9文件的隨機訪問62參數(shù)mode有四種取值:①"r"―以只讀方式打開文件;②"rw"―以讀寫方式打開文件,則用一個RandomAccessFile對象就可以同時進行讀、寫兩種操作;③"rwd"―以讀寫方式打開文件,并且要求對文件內(nèi)容的更新要同步地寫到底層存儲設(shè)備;④"rws"-與“rwd”基本相同,只是還可以更新文件的元數(shù)據(jù)(MetaData)。9.9文件的隨機訪問63參數(shù)mode有四種取值:9.9文件的隨機訪問632.隨機存取文件的操作(1)文件引用的操作文件引用的運行規(guī)律:一是新建RandomAccessFile對象的文件引用位于文件的開頭處;另外,每次讀寫操作后,文件位置引用都相應(yīng)后移讀寫的字節(jié)數(shù)。9.9文件的隨機訪問642.隨機存取文件的操作9.9文件的隨機訪問642.隨機存取文件的操作(1)文件引用的操作9.9文件的隨機訪問方

法說

明longgetFilePointer()返回當前文件引用,即從文件開頭算起的絕對位置。voidseek(longpos)將文件引用定位到指定位置。參數(shù)pos是相對于文件開頭的絕對偏移量。longlength()返回文件長度。可以通過將文件長度與文件引用相比較,判斷是否讀到了文件尾。intskipBytes(intn)從當前位置開始跳過n個字節(jié),返回值表示實際跳過的字節(jié)數(shù)。652.隨機存取文件的操作9.9文件的隨機訪問方法說2.隨機存取文件的操作(2)文件讀操作readBoolean(),readChar(),readInt(),readLong(),readFloat(),readDouble(),readLine(),readUTF()等。這些方法的功能與DatalnputStream類中的同名方法相同。其中,readLine()從當前位置開始,到第1個‘\n’為止,讀取一行文本,它將返回一個String對象。9.9文件的隨機訪問662.隨機存取文件的操作9.9文件的隨機訪問662.隨機存取文件的操作(3)寫操作RandomAccessFile類同時還實現(xiàn)了Dataoutput接口,因此具有與Dataoutput類同樣強大的具有類型轉(zhuǎn)換功能的寫操作方法。RandomAccessFile類包含的寫方法主要包括:WriteBoolean(),WriteChar(),WriteUTF(),WriteInt(),WriteLong(),WriteFloat(),WriteDouble()等。9.9文件的隨機訪問672.隨機存取文件的操作9.9文件的隨機訪問67【例9-6】隨機文件的讀和寫。importjava.io.*;publicclassRandomFile{publicstaticvoidmain(String[]args)throwsIOException{ RandomAccessFileaFile; Strings="Thatisanapple."; aFile=newRandomAccessFile("test.txt","rw"); aFile.seek(aFile.length()); aFile.writeBytes(s); aFile.close(); }}9.9文件的隨機訪問68【例9-6】隨機文件的讀和寫。9.9文件的隨機訪問681.案例描述編寫一個類,要求能夠?qū)崿F(xiàn)從已知文件中讀取文件內(nèi)容并向屏幕輸出、從鍵盤讀取輸入并向文件輸出以及實現(xiàn)讀寫隨機訪問文件。2.案例分析(1)利用緩沖功能的輸入文件處理(2)輸出至屏幕(3)交互式輸入應(yīng)用(4)輸出至文件(5)訪問隨機文件9.10案例分析:多種流的實現(xiàn)691.案例描述9.10案例分析:多種流的實現(xiàn)693.案例實現(xiàn):見IOStreamDemo.java4.歸納與提高:文件輸入輸出流構(gòu)造方法的參數(shù)是文件對象緩沖流構(gòu)造方法的參數(shù)是其他流對象。標準輸入輸出在main方法運行時自動生成對象,而不需要在程序中實例化。9.10案例分析:多種流的實現(xiàn)703.案例實現(xiàn):見IOStreamDemo.java9.10小結(jié)本章主要介紹了Java輸入輸出系統(tǒng)中流的概念,流的分類重點介紹了字節(jié)流與字符流的使用。字節(jié)流與和字符流的使用非常相似,兩者除了操作代碼上的不同之外,還有其他不同點。實際上字節(jié)流在操作時本身不會用到緩沖區(qū)(內(nèi)存),是文件本身直接操作的,而字符流在操作時使用了緩沖區(qū),通過緩沖區(qū)再操作文件。71小結(jié)本章主要介紹了Java輸入輸出系統(tǒng)中流的概念,流的分類7小結(jié)使用字節(jié)流好還是字符流好?所有文件在硬盤或在傳輸時都是以字節(jié)方式進行的,包括圖片等都是按字節(jié)的方式存儲的,而字符是只有在內(nèi)存中才會形成,所以在開發(fā)中,字節(jié)流使用較為廣泛。對于文件訪問主要有順序和隨機兩種,可以用File類及RandomAccessFile類實現(xiàn)。72小結(jié)使用字節(jié)流好還是字符流好?所有文件在硬盤或在傳輸時都是以第九章Java輸入輸出系統(tǒng)第九章Java輸入輸出系統(tǒng)本章目錄流的基本概念1字節(jié)流2字符流3File類4System.in和System.out對象5FileInputStream類和FileOutputStream類6FileReader類和FileWriter類

7過濾流8文件的隨機訪問9案例分析:多種流的實現(xiàn)1074本章目錄流的基本概念1字節(jié)流2字符流3File類4S教學(xué)目標掌握流的基本概念掌握Java中各種常用輸入/輸出流的基本用法能夠熟練地編寫應(yīng)用程序解決文件的讀寫問題。75教學(xué)目標掌握流的基本概念3教學(xué)重點字節(jié)流與字符流的區(qū)別File類的使用過濾流的合理使用文件的隨機訪問操作76教學(xué)重點字節(jié)流與字符流的區(qū)別49.1流的基本概念java.io包:支持流的輸入輸出十分巨大,定義了大約60個類,包含大量方法要了解更多的信息參看API文檔在Java1.3及其以后的版本中,讀寫文件的唯一手段就是使用流。779.1流的基本概念java.io包:59.1流的基本概念流(stream):是輸入和輸出設(shè)備的一種抽象表示,這些設(shè)備是數(shù)據(jù)源或數(shù)據(jù)終點。可以向流中寫入數(shù)據(jù),也可以從流中讀出數(shù)據(jù)。大家可以把流想象為流入自己程序或從自己程序中流出的字節(jié)序列。789.1流的基本概念流(stream):69.1流的基本概念為什么引入流作為的基本輸入輸出操作?讓實現(xiàn)這些操作的程序編碼獨立于所涉及的設(shè)備。這樣做的好處有兩點:不必擔(dān)心各種設(shè)備的具體工作機制,對于它們的管理均在幕后進行。用戶的程序可以適用于各種輸入輸出設(shè)備,改變輸入輸出設(shè)備時不用改寫程序編碼。799.1流的基本概念為什么引入流作為的基本輸入輸出操作?79.1流的基本概念流式輸入輸出的特點每個數(shù)據(jù)都必須等待排在它前面的數(shù)據(jù)讀入或送出之后才能被讀寫;每次讀寫操作處理的都是序列中剩余的未讀寫數(shù)據(jù)中的第一個,而不能隨意選擇輸入輸出的位置。809.1流的基本概念流式輸入輸出的特點89.1流的基本概念文件程序終端文件程序網(wǎng)絡(luò)端點數(shù)據(jù)流起點終點網(wǎng)絡(luò)端點文件,字符串存儲區(qū)819.1流的基本概念文件程序終端文件程序網(wǎng)絡(luò)端點數(shù)據(jù)流起終9.1流的基本概念Java中有兩種基本的流(1)輸入流:打開流→當流中還有數(shù)據(jù)時執(zhí)行讀操作→關(guān)閉流。(2)輸出流:打開流→當有數(shù)據(jù)需要輸出時執(zhí)行寫操作→關(guān)閉流。829.1流的基本概念Java中有兩種基本的流109.1流的基本概念輸出流:從計算機流向外設(shè)的數(shù)據(jù)序列,即把數(shù)據(jù)寫入流時,該流稱為輸出流。輸出流可以通往任何可以傳輸字節(jié)序列的設(shè)備,例如硬盤上的文件,或連接用戶系統(tǒng)至遠程系統(tǒng)的電話線路。輸出流也可以通向顯示器,但這會大大限制其真正的功能。輸入流:從外設(shè)流入計算機的數(shù)據(jù)序列;839.1流的基本概念輸出流:從計算機流向外設(shè)的數(shù)據(jù)序列,即9.1流的基本概念程序輸入流輸出流數(shù)據(jù)數(shù)據(jù)顯示器鍵盤849.1流的基本概念程序輸入流輸出流數(shù)據(jù)數(shù)據(jù)顯示器鍵盤129.1流的基本概念1.輸入流(Inputstream)通過打開一個到數(shù)據(jù)源(文件、內(nèi)存或網(wǎng)絡(luò)端口上的數(shù)據(jù))的輸入流,程序可以從數(shù)據(jù)源上順序讀取數(shù)據(jù)。讀數(shù)據(jù)的邏輯為:openastreamwhilemoreinformationreadinformationclosethestream859.1流的基本概念1.輸入流(Inputstream)9.1流的基本概念2.輸出流(Outputstream)通過打開一個到目標的輸出流,程序可以向外部目標順序?qū)憯?shù)據(jù)869.1流的基本概念2.輸出流(Outputstream9.1流的基本概念2.輸出流(Outputstream)文件,當向其中寫數(shù)據(jù)時,它就是一個輸出流;當從其中讀取數(shù)據(jù)時,它就是一個輸入流。鍵盤只是一個輸入流,屏幕只是一個輸出流。寫數(shù)據(jù)的邏輯為:openastreamwhilemoreinformationwriteinformationclosethestream879.1流的基本概念2.輸出流(Outputstrea9.1流的基本概念另外,根據(jù)流中數(shù)據(jù)單位的不同,可將流分為字節(jié)流和字符流。(1)字節(jié)流:流中數(shù)據(jù)以8位字節(jié)為單元進行讀寫。(2)字符流:流中數(shù)據(jù)以16位字符為單位進行讀寫。889.1流的基本概念另外,根據(jù)流中數(shù)據(jù)單位的不同,可將流分9.1流的基本概念java.io包支持兩種類型的流:字符流類(CharacterStreams)

字符流類用于向字符流讀寫16位二進制字符。字節(jié)流類(ByteStreams)字節(jié)流類用于向字節(jié)流讀寫8位二進制的字節(jié)。一般地,字節(jié)流類主要用于讀寫諸如圖象或聲音等的二進制數(shù)據(jù)。

899.1流的基本概念java.io包支持兩種類型的流:179.1流的基本概念java.io中的基本流類:說明:它們是抽象類,不能直接創(chuàng)建對象。ByteStreamsCharacterStreamsInputStreamReaderOutputStreamWriter909.1流的基本概念java.io中的基本流類:Byte9.2字節(jié)流InputStream類和OutputStream類是字節(jié)流的兩個頂層父類。它們提供了輸入流類與輸出流類的通用API。字節(jié)流一般用于讀寫二進制數(shù)據(jù),例如圖像和聲音數(shù)據(jù)。有兩個字節(jié)流ObjectInputStream和ObjectOutputStream是用來實現(xiàn)對象的串行化,即對象的輸入輸出。919.2字節(jié)流InputStream類和OutputStr9.2字節(jié)流1.InputStream類929.2字節(jié)流1.InputStream類209.2字節(jié)流InputStream類的主要方法read():從流中讀入數(shù)據(jù)skip():跳過流中若干字節(jié)數(shù)available():返回流中可用字節(jié)數(shù)mark():在流中標記一個位置reset():返回標記過的位置

markSupport():是否支持標記和復(fù)位操作

close():關(guān)閉流939.2字節(jié)流InputStream類的主要方法219.2字節(jié)流InputStreamAudioInputStreamFileInputStreamObjectInputStreamSequenceInputStreamByteArrayInputStreamPipedInputStreamFilterInputStream用于讀取音頻數(shù)據(jù)用于讀取文件中的數(shù)據(jù)用于讀取流中的對象用于讀取流序列用于讀取字節(jié)數(shù)組用于讀取管道流用于過濾現(xiàn)有流的輸入949.2字節(jié)流InputStreamAudioInputS9.2字節(jié)流FilterInputStream類有9個直接子類,它們提供對輸入流數(shù)據(jù)過濾或轉(zhuǎn)換的更多的特殊方式。BufferedInputStreamDataInputStreamCheckedInputStreamCipherInputStreamDigestInputStreamInflaterInputStreamLineNumberInputStreamProgressMonitorInputStreamPushbackInputStream959.2字節(jié)流FilterInputStream類有9個直輸9.2字節(jié)流BufferedInputStream把流包裝到BufferedInputStream對象中的效果是將基本數(shù)據(jù)流緩沖入內(nèi)存,使得一次可以從流中讀入大塊數(shù)據(jù)(其最大值取決于緩沖區(qū)的大小),然后讓read方法可以直接從內(nèi)存緩沖區(qū)中讀取數(shù)據(jù),當緩沖區(qū)為空時,僅從基本數(shù)據(jù)流執(zhí)行一次真正的讀操作。BufferedInputStreamkeyboard=newBufferedInputStream(System.in);96輸9.2字節(jié)流BufferedInputStreamBu9.2字節(jié)流2.OutputSteam類979.2字節(jié)流2.OutputSteam類259.2字節(jié)流write(intb):將一個整數(shù)輸出到流中(只輸出低位字節(jié),為抽象方法)write(byteb[]):將字節(jié)數(shù)組中的數(shù)據(jù)輸出到流中write(byteb[],intoff,intlen):將數(shù)組b中從off指定的位置開始,長度為len的數(shù)據(jù)輸出到流中flush():刷空輸出流,并將緩沖區(qū)中的數(shù)據(jù)強制送出close():關(guān)閉流989.2字節(jié)流write(intb):將一個整數(shù)輸出到流9.2字節(jié)流OutputStreamFileOutputStreamObjectOutputStreamByteArrayOutputStreamPipedOutputStreamFilterOutputStream用于向文件寫用于將對象寫入流用于向字節(jié)數(shù)組寫用于向流管道寫用于過濾現(xiàn)有流的輸出999.2字節(jié)流OutputStreamFileOutput9.3字符流字符流能夠處理Unicode字符集中所有的字符,而字節(jié)流限于處理ISO-Latin-1的8位字節(jié)字符流采用了統(tǒng)一的編碼標準,可國際化使用字符流來讀寫文本類數(shù)據(jù)。Reader類和Writer類是java.io包中兩個字符流類的頂層抽象父類。1009.3字符流字符流能夠處理Unicode字符集中所有的9.3字符流Reader和Writer都是抽象類。Reader和Writer對象通常使用InputStream或OutputStream對象來創(chuàng)建InputStream或OutputStream對象封裝了與最終數(shù)據(jù)源或數(shù)據(jù)終點這種外設(shè)的連接。1019.3字符流Reader和Writer都是抽象類。299.3字符流ReaderInputStreamReaderBufferedReaderPipedReaderCharArrayReaderStringReader用于讀取字符流用于緩沖其他Readers類用于讀取PipedWriter用于讀取字符數(shù)組用于讀取字符串FilterReader用于讀取過濾后的流1029.3字符流ReaderInputStreamRead9.3字符流用于像讀取字符流一樣讀取二進制輸入流的具體類是InputStreamReader。InputStreamReader類定義了3種read()方法,這些方法將從基本流中讀取一個或多個字節(jié),并且使用默認轉(zhuǎn)換方式將它們由本地字符編碼轉(zhuǎn)換為Unicode碼后,再將它們返回。InputStreamReaderkeyboard=newInputStreamReader(System.in);1039.3字符流用于像讀取字符流一樣讀取二進制輸入流的具體如果使用BufferedReader對象來緩沖數(shù)據(jù)流,則讀取工作的效率會有所提高。CharArrayReader對象創(chuàng)建于數(shù)組,并且允許用戶從數(shù)組讀取數(shù)據(jù),就像是從字符輸入流中讀取數(shù)據(jù)一樣。StringReader對象類實質(zhì)上做相同的事情,只是處理的是String對象。9.3字符流BufferedReaderkeyboard=newBufferedReader(newInputStreamReader(System.in));104如果使用BufferedReader對象來緩沖數(shù)據(jù)流,則讀取9.3字符流WriterOutputStreamWriterBufferedWriterPipedWriterCharArrayWriterStringWriter用于寫字符流用于緩沖其他Writers類用于向PipedReader寫用于向字符數(shù)組寫用于向字符串寫PrintWriter用于寫格式化數(shù)據(jù)FilterWriter用于寫過濾后的流1059.3字符流WriterOutputStreamWriOutputStreamWriter類將字符寫入基本二進制流中,它有一個子類FileWriter,F(xiàn)ileWriter將字符寫入封裝文件的流。PrintWriter類與打印沒有什么聯(lián)系。PrintWriter類定義了用于將二進制數(shù)格式化為字符,并且把它寫入數(shù)據(jù)流的方法。StringWriter類與CharArrayWriter類是用于將字符數(shù)據(jù)寫入StringBuffer對象或char[]型數(shù)組。通常這些類用來執(zhí)行數(shù)據(jù)轉(zhuǎn)換,使得轉(zhuǎn)換結(jié)果可以從基礎(chǔ)數(shù)組或字符串中得到。9.3字符流106OutputStreamWriter類將字符寫入基本二進制流9.3字符流注意:PrintWriter對象所作的格式化無助于讓輸出行中的各項內(nèi)容按列對齊排列。如果希望產(chǎn)生特定的格式輸出,必須自己去編寫代碼。StringWriterstrWriter=newStringWriter();PrintWriterwriter=newPrintWriter(strWriter);doublevalue=2.71828;writer.println(value);StringBufferstr=strWriter.getBuffer();1079.3字符流注意:PrintWriter對象所作的格式9.4File類File類功能:得到文件或目錄的描述信息,包括文件名稱、所在目錄、可讀性、可寫性、長度和文件的最后修改時間等可以生成新的目錄改變文件名刪除文件列出一個目錄中所有的文件或與某個模式相匹配的文件等。1089.4File類File類功能:369.4File類File類的構(gòu)造方法:(1)publicFile(Stringpath)參數(shù)path是包含目錄和文件名的字符串,Java把目錄看作一種特殊的文件,因此該字符串可以沒有文件名,這時若調(diào)用方法isFile()將返回false,說明File對象是目錄而不是文件。(2)publicFile(Stringpath,Stringname)path是目錄路徑(父目錄),name可包含目錄和文件名(相對于父目錄)。(3)publicFile(Filedir,Stringname)dir是一個文件對象(父目錄),child可包含目錄和文件名(相對于父目錄)。1099.4File類File類的構(gòu)造方法:379.4File類File類的構(gòu)造方法:(1)publicFile(Stringpath)參數(shù)path是包含目錄和文件名的字符串,Java把目錄看作一種特殊的文件,因此該字符串可以沒有文件名,這時若調(diào)用方法isFile()將返回false,說明File對象是目錄而不是文件。(2)publicFile(Stringpath,Stringname)path是目錄路徑(父目錄),name可包含目錄和文件名(相對于父目錄)。(3)publicFile(Filedir,Stringname)dir是一個文件對象(父目錄),child可包含目錄和文件名(相對于父目錄)。1109.4File類File類的構(gòu)造方法:38例如:Filef1=newFile("D:/Java");Filef2=newFile("D:/Java","test.txt");Filef3=newFile(f1,"test.txt");Filef4=newFile("file:///D:/Java/test.txt")9.4File類111例如:9.4File類399.4File類方法說明publicStringgetName()返回文件名。publicStringgetPath()返回文件路徑。publicStringgetAbsolutePath()返回文件絕對路徑。publicStringgetParent()返回文件的父目錄。publicbooleanexists()判斷文件是否存在。publicbooleancanWrite()判斷文件是否可寫。publicbooleancanRead()判斷文件是否可讀。publicbooleanisFile()判斷對象是否是文件。publicbooleanisDirectory()判斷對象是否是目錄。publicnativebooleanisAbsolute()如果文件名為絕對名,則返回真。1129.4File類方法說明publicS9.4File類方法說

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論