第8章 Java的輸入輸出_第1頁
第8章 Java的輸入輸出_第2頁
第8章 Java的輸入輸出_第3頁
第8章 Java的輸入輸出_第4頁
第8章 Java的輸入輸出_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八章Java的輸入輸出流教學(xué)提示大多數(shù)的程序都離不開輸入和輸出,比如從鍵盤讀取數(shù)據(jù),從文件中獲取數(shù)據(jù)或者將數(shù)據(jù)存入文件,在顯示器上顯示數(shù)據(jù),以及在網(wǎng)絡(luò)上進(jìn)行信息交互等,都會涉及到有關(guān)輸入/輸出的處理。本章內(nèi)容8.1輸入/輸出流8.2文件處理8.3隨機存取文件和本地可執(zhí)行文件8.4數(shù)據(jù)流與對象流8.5JAVA的多媒體技術(shù)知識要求了解流的概念;理解基本的I/O對象;掌握通過流處理字節(jié)級數(shù)據(jù)、字符數(shù)據(jù)、對象數(shù)據(jù)的存取方法和隨機流的訪問方法;掌握本地可執(zhí)行文件的調(diào)用方法。本章重/難點重點:使用文件流對文件的操作。難點:對象序列化。8.1輸入/輸出流1、流的概念2、io類庫流的概念概念:可以被認(rèn)為是數(shù)據(jù)從一種設(shè)備流向另一種設(shè)備的過程,就是一個通道。特點:數(shù)據(jù)的發(fā)送和獲取都是沿數(shù)據(jù)序列順序進(jìn)行的,每個數(shù)據(jù)必須等待它前面的數(shù)據(jù)發(fā)送或讀入后才能被讀寫。流的分類按流的運行方向分:輸入流輸出流輸入輸出流的概念輸入流:將數(shù)據(jù)引入到計算機的CPU中如:從磁盤中讀取信息、從網(wǎng)絡(luò)中讀信息、從掃描儀中讀信息輸出流:將數(shù)據(jù)引導(dǎo)到外部設(shè)備如:向磁盤中保存文件、向網(wǎng)絡(luò)中發(fā)送文件、在屏幕上顯示文件等當(dāng)需要讀入數(shù)據(jù)時,程序先從數(shù)據(jù)的來源(文件、網(wǎng)絡(luò)等)打開一個流,然后從這個流中順序讀取數(shù)據(jù)當(dāng)要輸出數(shù)據(jù)時,程序打開一個流,通過這個流向輸出目標(biāo)順序?qū)懭霐?shù)據(jù)流中的數(shù)據(jù)可以是二進(jìn)制數(shù)據(jù),或是某種格式的特定數(shù)據(jù)Java中數(shù)據(jù)流的兩種類型字節(jié)流(按8位一個字節(jié)來處理二進(jìn)制數(shù)據(jù))Java.io包中InputStream(輸入)和OutputStream(輸出)類來實現(xiàn)傳輸字符流(按16位一個字符的Unicode碼來處理數(shù)據(jù)文本型)Java.io包中Reader和Writer類來實現(xiàn)傳輸io類庫Java中數(shù)據(jù)輸入輸出的所有功能實現(xiàn)都是通過java.io包中的類和接口來完成的。

java.io包中的一些處理數(shù)據(jù)流和文件的類

字節(jié)(Byte)流傳輸8位的數(shù)據(jù)就應(yīng)用Byte流,這些類主要用來傳輸二進(jìn)制數(shù)據(jù),如聲音和圖像。InputStream和OutputStream是處理字節(jié)數(shù)據(jù)的基本類,這兩個類是抽象類,不能直接使用。字節(jié)輸入流的層次結(jié)構(gòu)文件流,對文件進(jìn)行讀寫操作管道流,實現(xiàn)程序或線程間的通信過濾流字節(jié)數(shù)組流,實現(xiàn)與內(nèi)存緩沖區(qū)的同步讀寫和CPU寄存器的讀寫數(shù)據(jù)流,實現(xiàn)帶格式的讀寫操作將數(shù)據(jù)讀寫到緩沖區(qū)對象流,將對象作為一個數(shù)據(jù)通過流進(jìn)行傳輸和存儲字節(jié)輸出流的層次結(jié)構(gòu)字符輸入流的層次結(jié)構(gòu)Character流以Reader(對應(yīng)輸入)和Writer(對應(yīng)輸出)兩個類族來實現(xiàn),其中Reader和Writer是輸入和輸出族的根類讀緩沖存儲進(jìn)行字節(jié)碼與字符碼的相互轉(zhuǎn)換用于字符文件的輸入、輸出字符輸出流的層次結(jié)構(gòu)字節(jié)流和字符流的相互轉(zhuǎn)換通過InputStreamReader類和OutputStreamWriter類實現(xiàn)InputStreamReader:讀取字節(jié)并解碼為字符PublicString(byte

bytes[],String

charsetName)OutputStreamWriter:將要寫入的字符解碼為字節(jié)Byte[]String.getBytes(String

charsetName)字符流和字節(jié)流的對應(yīng)關(guān)系

Reader類和Writer類的子類與InputStream類和OutputStream類的子類大部分是對應(yīng)的,不同之處是前者用來處理16位的字符流,而后者用來處理8位的字節(jié)流字節(jié)流和字符流的對應(yīng)表之前常用的輸入輸出方法PrintStream類

println()不屬于OutputStream類,是PrintStream類的子類,能提供復(fù)雜的輸出。PrintStream類為其他輸出流添加了功能,使它們能夠方便地打印各種數(shù)據(jù)值表示形式。

PrintStream類的方法有:Write,flush,checkError,print,println,close.其中println可以輸出多種形式的數(shù)據(jù).例如:

System.in和System.out對象為了支持標(biāo)準(zhǔn)的輸入輸出設(shè)備,Java定義了兩個流的對象:System.in和System.out。System.in可以從鍵盤中讀入數(shù)據(jù),System.out可以將數(shù)據(jù)輸出到顯示屏。例:輸入一個字符,在屏幕上顯示該字符

importjava.io.*;publicclassCharInput1{publicstaticvoidmain(String[]args)throws

IOException//必須做異常處理{inta; try{System.out.print("請輸入一個字符:");

a=System.in.read();

System.out.println("你輸入的字符是"+(char)a);}catch(IOExceptione){System.out.println("錯誤信息為:"+e.toString()); }}}例:輸入一行字符,在屏幕上顯示該行字符importjava.io.*;publicclassCharInput2{publicstaticvoidmain(String[]args){bytebuffer[]=newbyte[255];System.out.println("請在下面輸入一行字符:");try{System.in.read(buffer,0,255);//將輸入字符讀入數(shù)組里}catch(Exceptione)//捕獲異常并處理{ System.out.println("讀取輸入字符出錯,錯誤信息為:"+e.toString());}System.out.println("您剛才輸入的一行字符為:");StringinputStr=newString(buffer);System.out.println(inputStr);}}8.2文件處理1、文件與目錄管理2、文件流1、文件與目錄管理與文件操作相關(guān)的類:File類在Java語言中,用類File表示文件,F(xiàn)ile類可以處理各種文件操作。和文件相關(guān)的一個重要概念是目錄,Java的類File既可以表示文件,也可以表示目錄。File類(文件類)是Object類的直接子類,在java.io包中。不能完成數(shù)據(jù)的輸入輸出功能。File類是文件或目錄的抽象,封裝了相應(yīng)的屬性和方法File類的構(gòu)造方法Path:帶有絕對路經(jīng)或相對路徑的文件名或僅是路徑。如:Filef=newFile(“c:\j2sdk1.4.2\bin\D.java”)Filem=newFile(“\j2sdk1.4.2\bin\D.java”)

Files=newFile(“D.java”)方法二:

publicFile(Stringpath,Stringname)參數(shù)path是路徑,name是文件名或目錄名。即路徑和文件名分開,便于管理和修改如:Filen=newFile(“c:\j2sdk1.4.2\bin”,”D.java”)方法一:publicFile(Stringpath)File類相關(guān)的操作1.獲取相關(guān)的屬性可獲得文件名、路徑、長度、是目錄還是文件、目錄下的文件、讀寫屬性等2.主要的操作重命名、刪除、創(chuàng)建目錄文件處理——

1.獲取文件和目錄屬性列出目錄下的文件如果File對象是目錄,而不是文件,則可以用下面的方法列出目錄下的文件。publicString[]list()將目錄下的所有文件名保存在字符串?dāng)?shù)組中返回。獲取所有根目錄如果需要知道磁盤上的所有文件,則要找出系統(tǒng)平臺的所有根目錄名。publicstaticFile[]listRoots()該方法返回File數(shù)組,其中存放系統(tǒng)平臺的所有根目錄名。判斷文件或目錄是否存在booleanexists()判斷是文件還是目錄booleanisfile()booleanisDirectory()獲取文件、目錄名和路徑StringgetName()StringgetPath()獲取文件長度longlength()文件讀寫性質(zhì)booleancanRead();booleancanWirte();比較文件或目錄booleanequals(Filef)文件處理——

2.文件及目錄操作創(chuàng)建新目錄

①publicbooleanmkdir()生成File對象指定的目錄。②publicbooleanmkdirs()生成File對象指定的目錄樹。兩個方法的區(qū)別:mkdirs()可以創(chuàng)建目錄路徑中多層目錄,即同時創(chuàng)建這個目錄的父目錄以及父目錄的父目錄,mkdir()要求創(chuàng)建目錄的父目錄已存在。創(chuàng)建新目錄例如,下面的語句就在Windows下創(chuàng)建目錄樹:c:\lianxi\exampleFilef=newFile("c:\lianxi\example");

f.mkdirs();創(chuàng)建新文件下面的語句在當(dāng)前目錄下建立一個文本文件wo.txt:Filef=newFile("./wo.txt"); f.createNewFile();重命名文件boolean

renameTo(File

newFile);刪除當(dāng)前文件voiddelete();2、文件流對文件進(jìn)行輸入輸出處理的類FileInputStream:字節(jié)文件輸入流FileOutputStream:字節(jié)文件輸出流FileReader:字符文件輸入流FileWriter:字符文件輸出流FileInputStream類的構(gòu)造方法

方法一:直接用文件名FileInputStreamfis=newFileInputStream(“e:/temp/b.txt");方法二:用文件對象名Filef=newFile(“e:/temp/b.txt");FileInputStreamfis=newFileInputStream(f);FileInputStream類常用的方法intread():每次讀一個字節(jié)的數(shù)據(jù),讀完返回-1int

read(byte[]b):每次讀多個字節(jié),將數(shù)據(jù)讀入到一個數(shù)組b[]中,返回實際讀取字節(jié)數(shù)。int

read(byte[]b,int

off,int

len)

將len個字節(jié)的數(shù)據(jù)讀入到一個字節(jié)型數(shù)組b[]中,從下標(biāo)off開始存放,并返回實際讀入的字節(jié)數(shù)。intavailable()

返回可讀入的字節(jié)數(shù)。voidclose()

關(guān)閉輸入流,并釋放任何與該流有關(guān)的資源。protectedvoidfinalize()

當(dāng)讀到無用信息時,關(guān)閉該流。longskip(longn)

跳過輸入流上的n個字節(jié)。FileInputStream類讀取文件例子功能:從文件里取內(nèi)容顯示到對話框中關(guān)鍵點:

1.建立流從相應(yīng)文件中取數(shù)據(jù)

2.把讀到的數(shù)據(jù)轉(zhuǎn)換成string類型,顯示出來importjava.io.*;importjavax.swing.*;classExample8_1{publicstaticvoidmain(Stringargs[]){bytebuffer[]=newbyte[2056];Stringstr; try{Filefile=newFile("e:/第八章/第8章/tips.dat"); FileInputStreamfileInput=newFileInputStream(file);//創(chuàng)建輸入流對象

intbytes=fileInput.read(buffer,0,2056);//將流中的數(shù)據(jù)讀到數(shù)組buffer的指定位置

str=newString(buffer,0,bytes);//使用數(shù)組buffer創(chuàng)建字符串

}catch(Exceptione) {str=e.toString();}

JOptionPane.showMessageDialog(null,str);System.exit(0);}}

FileOutputStream類的構(gòu)造方法方法一:直接用文件名FileOutputStream

fos=new

FileOutputStream("e:/temp/b.txt");如e:/temp/b.txt文件不存在,則自動創(chuàng)建一個如e:/temp/b.txt文件已存在,則覆蓋其內(nèi)容方法二:用文件對象名Filef=newFile("e:/temp/b.txt");FileOutputStream

fos=newFileOutputStream(f);FileOutputStream類的常用方法voidwrite()voidwrite(intb)voidwrite(byte[]b)longskip(longn)voidclose()voidfinalize()FileInputStream類輸出數(shù)據(jù)的例子功能:從圖片a.jpg中讀取數(shù)據(jù)創(chuàng)建圖片b.jpg

FileInputStream類輸出數(shù)據(jù)的例子關(guān)鍵點:1、用輸入流將a.jpg中的內(nèi)容讀入內(nèi)存2、用輸出流將內(nèi)存中的內(nèi)容寫入b.jpg中classFileRW

{intbytes;bytebuffer[]=newbyte[65560];FileInputStreamfileInput;FileOutputStream

fileOutput;

FileRW()//構(gòu)造方法

{takeimg();loadimg();

JOptionPane.showMessageDialog(null,"文件復(fù)制并更名成功!\n文件大小為:"+bytes);System.exit(0);}publicvoidtakeimg()//讀取圖像文件a.jpg{try{Filefile=newFile(“a.jpg”);//創(chuàng)建文件對象

fileInput=newFileInputStream(file);//創(chuàng)建輸入流對象

bytes=fileInput.read(buffer,0,65560);

//將從文件file中讀取的數(shù)據(jù)寫入到數(shù)組buffer中

}

catch(IOException

ei){System.out.println(ei);}}publicvoidloadimg() { try{

fileOutput=newFileOutputStream("b.jpg");//創(chuàng)建文件輸出流對象

fileOutput.write(buffer,0,bytes);//從數(shù)組buffer中讀取數(shù)據(jù)

}

catch(IOException

eo){System.out.println(eo);}}}publicclassExample8_2{publicstaticvoidmain(String[]args) {newFileRW(); }}FileInputStream類輸出數(shù)據(jù)的例子a.jpgb.jpg字節(jié)數(shù)組FileInputStreamFileOutputStream文件輸入流文件輸出流FileReader類和FileWriter的構(gòu)造方法FileReaderfir=newFileReader("b.txt");FileReaderfir=newFileReader(文件對象名);FileWriterfir=newFileWriter("b.txt");FileWriterfir=newFileWriter(文件對象名);BufferedReader類和BufferedWriter類是增加了緩沖區(qū)的輸入輸出流類,它們用來連接字符輸入輸出流,使數(shù)據(jù)處理速度大大加快,提高了讀寫效率。數(shù)據(jù)首先寫入緩沖區(qū),當(dāng)緩沖區(qū)的數(shù)據(jù)滿時,數(shù)據(jù)才會寫入所連接的輸入/輸出流;當(dāng)緩沖區(qū)未滿時,可以用該類的方法flush()將緩沖區(qū)的數(shù)據(jù)強制全部寫入文件。

flush():將緩沖區(qū)中的數(shù)據(jù)強制送出

為加快數(shù)據(jù)傳輸速度,提高效率,有時輸出數(shù)據(jù)流會在提交數(shù)據(jù)之前把所要輸出的數(shù)據(jù)先鎖定在內(nèi)存緩沖區(qū),然后成批地進(jìn)行輸出,每次傳輸過程都以某特定數(shù)據(jù)長度為單位傳輸數(shù)據(jù)。在這種方式下,在數(shù)據(jù)的末尾一般都會有一部分?jǐn)?shù)據(jù)由于數(shù)量不夠一個傳輸單位,而存留在緩沖區(qū)里,用方法flush()則可以將這部分?jǐn)?shù)據(jù)強制提交。BufferedReader類和BufferedWriter類的構(gòu)造方法

BufferedReader(字符輸入流對象)BufferedWriter(字符輸出流對象)字符流進(jìn)行讀寫操作的常用方法StringreadLine();從輸入流按行讀取字符write(Strings,intoff,int

len);向輸出流寫入多個字符close();關(guān)閉流例8—3本周實驗作業(yè)1、利用File類的相關(guān)方法,完成目錄和文件的創(chuàng)建、刪除和更名2、計算Fibonacii數(shù)列,a1=1,a2=1...an=an-1+an-2即前兩個數(shù)是1,從3個數(shù)開始,每個數(shù)是前兩個數(shù)的和,計算數(shù)列的前20項,并用字節(jié)文件流的方式輸出到一個文件,要求每5項1行。

本周實驗作業(yè)3、編寫一個程序,實現(xiàn)如下圖所示的可視化復(fù)制文件的功能8.3隨機存取文件和本地可執(zhí)行文件1、隨機存取文件流(RandomAccessFile類)2、本地可執(zhí)行文件(Runtime類)什么是隨機存取文件流?

RandomAccessFile類可以讀寫文件中任意位置上的字節(jié)、文本等數(shù)據(jù)既可以作為數(shù)據(jù)流的源,又可作為數(shù)據(jù)流目的。通過其不同的構(gòu)造函數(shù)來確定是輸出還是輸入。它是一個獨立分支的類,并不是InputStream或OutputStream的衍生類隨機存取文件的原理可看做是在文件系統(tǒng)中的一個大型字節(jié)數(shù)組,有指針“讀”操作:指針從開始位置讀取字節(jié)并向前移動“寫”操作:指針從開始位置寫入字節(jié)并向前移動可通過相應(yīng)方法設(shè)置指針RandomAccessFile類的構(gòu)造函數(shù)newRandomAccessFile(“part.txt”,“r”);//創(chuàng)建一個對文件名稱為part的只讀隨機訪問newRandomAccessFile(文件對象名,"rw");隨機存取文件流的常用方法該類實現(xiàn)了DataInput接口和DataOutput接口DataOutput接口中的方法有:DataInput接口中的方法:隨機存取文件流的控制讀寫指針

int

skipBytes(intn)

//使文件指針向后移動指定的n個字節(jié)voidseek(longp)

//設(shè)置相對文件頭的指針偏移量,在此位置進(jìn)行下一次讀寫操作。

longgetFilePointer()//獲取當(dāng)前指針位置(相對于起始位)隨機存取文件流的使用importjava.io.*;classExample8_4{ publicstaticvoidmain(String[]args) {try{

RandomAccessFilef=new

RandomAccessFile("a.txt","rw");

f.writeBytes("Zhang

si

ming");//將字符串寫入輸出流

f.close(); }

catch(IOException

e){System.out.println(e);}}}Example8_4運行結(jié)果沒有a.txt文件時,自動創(chuàng)建文件,并寫入字符串寫入前寫入后隨機存取文件流實現(xiàn)一個英漢小詞典關(guān)鍵點:創(chuàng)建用戶界面:兩個Panel,一個用來輸入,一個用來顯示錄入按鈕:使用RandomAccessFile輸出流在文件的指定位置添加內(nèi)容顯示按鈕:使用RandomAccessFile輸入流例8—5什么是本地可執(zhí)行文件?Runtime類層次結(jié)構(gòu)

java.lang.Object

----java.lang.Runtime

作用:運行本地機的可執(zhí)行文件,如本機的程序,自帶的計算器等等Runtime類對象的創(chuàng)建應(yīng)用程序都有一個Runtime類對象,使應(yīng)用程序能夠與運行環(huán)境相連接,但應(yīng)用程序不能創(chuàng)建自己的Runtime類對象Runtimert=Runtime.getRuntime();Runtime類對象的常用方法如:rt.exec("javaExample8_5");Runtime類使用實例1、運行應(yīng)用程序8—52、調(diào)用Windows系統(tǒng)自帶的計算器3、設(shè)計一個簡單的JAVA編譯器,可以編寫源程序、編譯和運行程序Example8_6Example8_7Example8_8重點8.4數(shù)據(jù)流與對象流1、數(shù)據(jù)流2、對象流數(shù)據(jù)流的來源過濾流概念FilterInputStream和FilterOutputStream,它們是抽象類。使用過濾流時,比一般流多一道工序,就是過濾。過濾流是建筑在其他流之上的,如過濾流的方法read()從下層流中讀取數(shù)據(jù),并過濾后傳給程序,而write()方法是先過濾后,再把數(shù)據(jù)寫入下層流。過濾流作用對數(shù)據(jù)進(jìn)行處理提供了同步機制,使得某一時刻只有一個線程可以訪問一個I/O流過濾流的子類

DataInputStream和DataOutputStream

直接讀寫java的內(nèi)構(gòu)類型:intfloatboolean等BufferedInputStream

BufferedOutputStream

帶有緩沖區(qū)的輸入輸出LineNumberInputStream

行的計數(shù)PushbackInputStream

預(yù)讀一個字節(jié)的數(shù)據(jù),unread()方法:把剛讀過的字節(jié)退回數(shù)據(jù)流的作用實現(xiàn)直接讀寫java的各種內(nèi)構(gòu)類型的原始數(shù)據(jù):intfloatboolean等設(shè)置指針偏移量怎樣使用數(shù)據(jù)流?要使用數(shù)據(jù)流必須使它附加在其他流上。例如:FileInputStreamf=newFileInputStream("openFile.dat");//先生成一個文件輸入流fDataInputStreambis=newDataInputStream(f);//再對文件流f進(jìn)行過濾輸出不同類型數(shù)據(jù)值classExample8{publicstaticvoidmain(String

args[]){for(intx=1;x<=100;x++){

intfld1;longfld2;doublefld3;fld1=x+5;fld2=x*5;fld3=x*25;try{FileOutputStreamf=newFileOutputStream("t.dat");

DataOutputStream

bis=newDataOutputStream(f);bis.writeInt(fld1);bis.writeLong(fld2);bis.writeDouble(fld3);}

catch(IOExceptione){

System.out.println(e);}}System.exit(0);}}應(yīng)用數(shù)據(jù)流復(fù)制聲音文件classFileRW

{intbytes,f_length;bytebuffer[];

FileInputStreamfileInput;

FileOutputStream

fileOutput;DataInputStreamdataInput;

DataOutputStream

dataOutput;//構(gòu)造文件流和過濾流

FileRW() {Filefile=newFile("甜甜的.wma"); f_length=(int)file.length();//獲取文件大小,以便設(shè)置數(shù)組容量

buffer=newbyte[f_length];

takeimg();

loadimg();

JOptionPane.showMessageDialog(null,"文件復(fù)制并更名成功!\n文件大小為:"+f_length);System.exit(0);//退出程序}publicvoidtakeimg() { try{fileInput=newFileInputStream(file);

dataInput=newDataInputStream(fileInput);bytes=dataInput.read(buffer);}

catch(IOException

ei){System.out.println(ei);}}

publicvoidloadimg()//寫入到新文件中

{ try{fileOutput=newFileOutputStream("aa.wma");

dataOutput=newDataOutputStream(fileOutput);

dataOutput.write(buffer,0,bytes); }catch(IOException

eo){System.out.println(eo);}}}

publicclassExample8_9{publicstaticvoidmain(String[]args) {newFileRW(); }}對象流的來源對象流的作用把對象作為一個整體進(jìn)行傳輸和存儲對象流的應(yīng)用實例程序功能:將文本框?qū)ο蠹捌渲凶址鳛橐粋€整體進(jìn)行讀寫關(guān)鍵點:1、創(chuàng)建對象輸出流,將文本框連同內(nèi)容寫入文件2、創(chuàng)建對象輸入流,將文件內(nèi)容顯示例8—10本周實驗內(nèi)容1、建立一個文本文件,輸入學(xué)生3門課的成績,編寫一個程序,讀入這個文件中的數(shù)據(jù),輸出每門課的成績的最小值,最大值和平均值。2、編寫程序,保存一個文本對象并檢索對象的數(shù)據(jù)。什么是對象的序列化對象流進(jìn)行讀寫時,必須保證該對象是序列化的,才能保證對象被正確的讀出。把對象的狀態(tài)記錄下來就是對象的序列化怎樣進(jìn)行對象的序列化系統(tǒng)定義的類大多都是序列化對象用戶自己定義的類通過實現(xiàn)Serializable接口進(jìn)行序列化或繼承序列化類Serializable接口屬于java.io包不含方法對象的序列化實例1、實現(xiàn)日期、地址對象在對象流中的保存2、讀取8-11中保存的數(shù)據(jù)例8—11例8—12什么是管道流管道流(PipeStreams)是把一個線程的輸出作為另一個線程的輸入。作用:實現(xiàn)在程序、線程、代碼塊間直接傳輸數(shù)據(jù)。實現(xiàn)通過PipedInputStream和PipedOutputStream。管道流的使用方法1:PipedOutputStreamout=newPipedOutputStream()//創(chuàng)建管道輸出流out………{將數(shù)據(jù)寫入輸出流out}PipedIutputStreami

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論