![第9章 輸入輸出流_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/24/186e5bd7-0bc9-42df-8f64-03f4f491cf6c/186e5bd7-0bc9-42df-8f64-03f4f491cf6c1.gif)
![第9章 輸入輸出流_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/24/186e5bd7-0bc9-42df-8f64-03f4f491cf6c/186e5bd7-0bc9-42df-8f64-03f4f491cf6c2.gif)
![第9章 輸入輸出流_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/24/186e5bd7-0bc9-42df-8f64-03f4f491cf6c/186e5bd7-0bc9-42df-8f64-03f4f491cf6c3.gif)
![第9章 輸入輸出流_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/24/186e5bd7-0bc9-42df-8f64-03f4f491cf6c/186e5bd7-0bc9-42df-8f64-03f4f491cf6c4.gif)
![第9章 輸入輸出流_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/24/186e5bd7-0bc9-42df-8f64-03f4f491cf6c/186e5bd7-0bc9-42df-8f64-03f4f491cf6c5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第9章 輸入輸出流 WORD文檔使用說(shuō)明:第9章 輸入輸出流 來(lái)源于PDF轉(zhuǎn)換成WROD 本W(wǎng)OED文件是采用在線轉(zhuǎn)換功能下載而來(lái),因此在排版和顯示效果方面可能不能滿足您的應(yīng)用需求。如果需要查看原版WOED文件,請(qǐng)?jiān)L問(wèn)這里第9章 輸入輸出流 第9章 輸入輸出流|PDF轉(zhuǎn)換成WROD_PDF閱讀器下載第9章 輸入輸出流本章知識(shí)框圖學(xué)習(xí)重點(diǎn):掌握基本輸入輸出流。 掌握按數(shù)據(jù)類型操作輸入輸出流。 掌握輸入輸出對(duì)象。 掌握文件/目錄操作。Java采用“流”(Stream)來(lái)完數(shù)據(jù)的輸 入(Input)和輸出(Output),輸入輸出 簡(jiǎn)稱I/O。從外部數(shù)據(jù)源將數(shù)據(jù)讀入程序的 流稱為輸入流,從程序中將數(shù)
2、據(jù)寫入外部數(shù) 據(jù)源的流稱為輸出流。外部數(shù)據(jù)源可以是磁 盤文件、程序、內(nèi)存或硬件設(shè)備。可以按字 節(jié)、字符或類型化的數(shù)據(jù)進(jìn)行輸入輸出。也 可以將對(duì)象寫入文件,或從文件中讀出對(duì)象。 本章將詳細(xì)介紹各種常用的輸入輸出流操作。 基本輸入輸出流基本的輸入輸出流包括字節(jié)流、字符流和緩 沖流。在輸入時(shí),可使用Scanner對(duì)象從 流讀取特定類型的數(shù)據(jù)。在輸出時(shí),可以對(duì) 輸出格式進(jìn)行控制。 字節(jié)流字節(jié)流按字節(jié)(8位二進(jìn)制)輸入和輸出數(shù) 據(jù)。Java定義了很多字節(jié)流類,這些類都是 兩個(gè)抽象類InputStream和 OutputStream.的派生類。本節(jié)主要講解 兩個(gè)基本的字節(jié)流類:FileInputStrea
3、m (文件輸入流)和FileOutputStream(文 件輸出流)。1、創(chuàng)建FileInputStream對(duì)象可用下列方法創(chuàng)建文件輸入流對(duì)象: (1)FileInputStream(File file) 用File對(duì)象創(chuàng)建一個(gè)FileInputStream對(duì)象,F(xiàn)ile對(duì)象指定實(shí)際訪問(wèn)的磁盤文件。例如: FileInputStream datain = new FileInputStream(new File(""); 文件沒(méi)有指定路徑,默認(rèn)與應(yīng)用程序在相同目錄中。如果未找到指定文件,則拋 出FileNotFoundException異常。 (2)FileInputStr
4、eam(FileDescriptor fdObj) 用FileDescriptor對(duì)象創(chuàng)建一個(gè)FileInputStream對(duì)象。例如: FileInputStream datain = new FileInputStream(); FileDescriptor定義了3個(gè)靜態(tài)對(duì)象,等價(jià)于, 等價(jià)于,等價(jià)于。創(chuàng) 建FileInputStream對(duì)象時(shí),只能使用。采用這種方式創(chuàng)建的 FileInputStream對(duì)象可以從鍵盤讀取數(shù)據(jù)。 (3)FileInputStream(String name) 用指定的文件名創(chuàng)建一個(gè)FileInputStream對(duì)象。例如: FileInputStream
5、datain = new FileInputStream(""); Windows環(huán)境中的路徑分隔符號(hào)為“”,可用“”或“/”作為路徑分隔符。例如: FileInputStream datain = new FileInputStream("d:javatempchapter09");2、FileInputStream對(duì)象操作FileInputStream對(duì)象常用操作如下:available():返回可讀的字節(jié)數(shù)。若沒(méi)有可讀數(shù)據(jù),返回值為0。 close():關(guān)閉文件輸入流。 read():從輸入流讀取一個(gè)字節(jié),返回值類型為int。若沒(méi)有可讀數(shù)據(jù), 返回
6、-1。 read(byte b):從輸入流讀取數(shù)據(jù),按順序放入b的各個(gè)數(shù)組元素中。 返方法回值類型為int,表示從流中讀取的總的字節(jié)數(shù)。若沒(méi)有可讀數(shù)據(jù), 返回值為-1。 read(byte b, int bindex,int count):最多從輸入流讀取count個(gè)字 節(jié),按順序放入b數(shù)組中下標(biāo)從bindex開始的元素中。返方法回值類型為 int,表示從流中讀取的總的字節(jié)數(shù)。若沒(méi)有可讀數(shù)據(jù),返回值為-1。 skip(long n):在流中跳過(guò)n個(gè)字節(jié)。n不能為負(fù)數(shù),否則產(chǎn)生錯(cuò)誤。 FileInputStream對(duì)象的各個(gè)方法在出現(xiàn)錯(cuò)誤時(shí),會(huì)拋出IOException 異常。IOExcepti
7、on異常屬于檢查異常,必須在代碼中捕捉或聲明方法 拋出【例】使用FileInputStream對(duì)象讀取文件數(shù)據(jù)。(源文 件位置:光盤:chapter09. ,光 盤:chapter09) useFileInputStream從文本文件中 讀取數(shù)據(jù),并顯示在命令提示符窗口中。 文件內(nèi)容如下: 1:first line 2:second line 3:third line程序代碼如下: import .*; public class useFileInputStream public static void main(String args) throws IOException FileInpu
8、tStream in = null; try in = new FileInputStream(""); ("文件總字節(jié)數(shù):"+(); ("*文件內(nèi)容如下*"); int c;while ()!=0)/如果還有可讀數(shù)據(jù)則循環(huán) c = ();/讀一個(gè)字節(jié) /read方法返回的是int型數(shù)據(jù),要按字符輸出, /所以用char強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型。 /如果不轉(zhuǎn)換,輸出為字符ASCII碼的十進(jìn)制值 (char)c);/輸出 ("*文件內(nèi)容結(jié)束*"); ();/關(guān)閉流 in = new FileInputStream("
9、;");/重新建立文件輸入流 int count=0; byte b=new byte5; (16);/跳過(guò)16個(gè)字節(jié)if()!=0) count=(b);/從流讀取數(shù)據(jù)到字節(jié)數(shù)組 ("用數(shù)組讀出的數(shù)據(jù):"); for(int i=0;i<count;i+) ("%-4d",bi); ("n 對(duì)應(yīng)的字符:"); for(int i=0;i<count;i+) ("%-4s",(char)bi); finally if (in!= null) ();/關(guān)閉流 代碼中使用了FileInputStr
10、eam的各種方法,這些方法可能產(chǎn) 生IOException異常。代碼中沒(méi)有使用catch處理 IOException異常,所以在main方法的參數(shù)表之后使用 throws關(guān)鍵字聲明方法可能拋出IOException異常。 程序在finally代碼塊中關(guān)閉文件輸入流。如果沒(méi)有在程序中調(diào) 用close方法關(guān)閉流,系統(tǒng)可自動(dòng)將其關(guān)閉。close方法在關(guān)閉 流的同時(shí),釋放維護(hù)流使用的相同資源,所以建議讀者在代碼 中顯式調(diào)用close方法關(guān)閉流,以便提供相同效率。程序?qū)㈥P(guān)閉 流操作放在finally代碼塊中,這是因?yàn)椴还艹绦蜻\(yùn)行是否有錯(cuò), finally代碼都會(huì)執(zhí)行,從而保證關(guān)閉流。 說(shuō)明: 說(shuō)明:本例
11、中文件內(nèi)容為ASCII碼字符。如果文件 中包含非ASCII碼字符,比如漢字,按字節(jié)讀取會(huì)導(dǎo)致非 ASCII碼字符不能讀取和顯示。3、創(chuàng)建FileOutputStream對(duì)象可用下列方法創(chuàng)建FileOutputStream對(duì)象: (1)FileOutputStream(File file) 用指定File對(duì)象創(chuàng)建文件輸出流,向File對(duì)象指定的文件輸出數(shù)據(jù)。該方法始終創(chuàng)建一個(gè)新文件。如果 已存在同名文件,原文件被覆蓋。File對(duì)象指定的是一個(gè)文件夾或者文件路徑錯(cuò)誤,則會(huì)產(chǎn)生 FileNotFoundException異常。例如: FileOutputStream dataout = new Fi
12、leOutputStream(new File(""); (2)FileOutputStream(File file, boolean append) 參數(shù)append為false時(shí),與FileOutputStream(File file)相同。參數(shù)append為true時(shí),表示向文件 添加數(shù)據(jù)。例如: FileOutputStream dataout = new FileOutputStream(new File(""),true); (3)FileOutputStream(FileDescriptor fdObj) 用FileDescriptor對(duì)象
13、創(chuàng)建文件輸出流。例如: FileOutputStream dataout = new FileOutputStream(); (4)FileOutputStream(String name) 用指定文件名創(chuàng)建文件輸出流,向文件輸出數(shù)據(jù),與FileOutputStream(File file)方法類似。例如: FileOutputStream dataout = new FileOutputStream(""); (5)FileOutputStream(String name, boolean append) 參數(shù)append為false時(shí),與FileOutputStream
14、(String name)相同。參數(shù)append為true時(shí),表示向 文件添加數(shù)據(jù)。例如: FileOutputStream dataout = new FileOutputStream("",true);4、FileOutputStream對(duì)象操作FileOutputStream對(duì)象常用操作如下: close():關(guān)閉文件輸出流。 flush():刷新流,即向流中的數(shù)據(jù)全部寫入文件。 write(int n):向文件寫入一個(gè)字節(jié)。如果n大于255,即多余 一個(gè)字節(jié),則將n的最后一個(gè)字節(jié)寫入文件。寫入文件的字節(jié) n 視為字符的ASCII碼。例如,write(65)寫入文件的
15、是字符A ASCII write(65) A (其ASCII碼為65)。 write(byte b):將字節(jié)數(shù)組b中的數(shù)據(jù)按順序?qū)懭胛募?write(byte b, int bindex,int count):將字節(jié)數(shù)組b中下 標(biāo)從bindex開始的count個(gè)元素寫入文件。 FileOutputStream對(duì)象的各個(gè)方法在出現(xiàn)錯(cuò)誤時(shí),會(huì)拋出 IOException異常。【例】使用FileOutputStream對(duì)象向文件寫數(shù)據(jù)。(源文件位置: 光盤:chapter09. ,光 盤:chapter09,光 盤:chapter09) useFileOutputStream首先將文本文件中的數(shù)
16、據(jù)復(fù)制到新文件中,再為文件添加部分?jǐn)?shù)據(jù)。 文件內(nèi)容如下: 春曉 春眠不覺(jué)曉 處處聞啼鳥 夜來(lái)風(fēng)雨聲 花落知多少程序代碼如下: /將文件中的數(shù)據(jù)復(fù)制到文件中,并添加部 分?jǐn)?shù)據(jù) import .*; public class useFileOutputStream public static void main(String args) throws IOException FileInputStream in = null; FileOutputStream out = null; try in = new FileInputStream(""); out = new Fil
17、eOutputStream(""); 字符流字符流按字符讀取和寫入數(shù)據(jù)。Java采用Unicode字符,在 讀寫文件時(shí),字符流可以自動(dòng)將文件中的本地字符轉(zhuǎn)換為 Unicode字符。本節(jié)介紹兩個(gè)字符流類:FileReader(讀文 件)和FileWriter(寫文件)。 FileReader和FileWriter類的基類分別為 InputStreamReader和OutputStreamWriter類, InputStreamReader和OutputStreamWriter類分別繼承抽 象類Reader和Writer。InputStreamReader和 OutputStr
18、eamWriter類可以按本地字符集和指定字符集讀 寫文件。文件中的數(shù)據(jù)仍按字節(jié)讀寫,InputStreamReader 和OutputStreamWriter流完成字符和字節(jié)的轉(zhuǎn)換。 FileReader和FileWriter流采用本地字符集讀寫文件。1、創(chuàng)建FileReader對(duì)象可用下列方法創(chuàng)建FileReader對(duì)象: FileReader (File file) 用File對(duì)象創(chuàng)建一個(gè)FileReader對(duì)象,F(xiàn)ile對(duì)象指定實(shí)際訪問(wèn)的磁 盤文件。例如: FileReader datain = new FileReader (new File(""); FileR
19、eader (FileDescriptor fdObj) 用FileDescriptor對(duì)象創(chuàng)建一個(gè)FileReader對(duì)象。例如: FileReader datain = new FileReader (); FileReader (String name) 用指定的文件名創(chuàng)建一個(gè)FileReader對(duì)象。例如: FileReader datain = new FileReader ("d:javatempchapter09");2、FileReader流常用操作FileReader流常用操作如下: getEncoding():返回文件采用的字符集。 close():關(guān)閉
20、流。 read():從流讀取一個(gè)字符,返回值類型為int。若沒(méi)有可讀 數(shù)據(jù),返回-1。 read(char b):從流讀取字符,按順序放入b的各個(gè)數(shù)組元 素中。返方法回值類型為int,表示從流中讀取的總的字符數(shù)。 若沒(méi)有可讀數(shù)據(jù),返回值為-1。 read(char b, int bindex,int count):最多從輸入流讀取 count個(gè)字符,按順序放入b數(shù)組中下標(biāo)從bindex開始的元素 中。返方法回值類型為int,表示從流中讀取的總的字符數(shù)。 若沒(méi)有可讀數(shù)據(jù),返回值為-1。 skip(long n):在流中跳過(guò)n個(gè)字符。n不能為負(fù)數(shù),否則產(chǎn) 生錯(cuò)誤。3、創(chuàng)建FileWriter對(duì)象可
21、用下列方法創(chuàng)建FileWriter對(duì)象: FileWriter (File file) 用指定File對(duì)象創(chuàng)建FileWriter流,向File對(duì)象指定的文件輸出數(shù)據(jù)。 該方法始終創(chuàng)建一個(gè)新文件。如果已存在同名文件,原文件被 覆蓋。File對(duì)象指定的是一個(gè)文件夾或者文件路徑錯(cuò)誤,則會(huì) 產(chǎn)生FileNotFoundException異常。例如: FileWriter dataout = new FileWriter (new File(""); FileWriter (File file, boolean append) 參數(shù)append為false時(shí),與FileWriter
22、 (File file)相同。參數(shù) append為true時(shí),表示向文件添加數(shù)據(jù)。例如: FileWriter dataout = new FileWriter (new File(""),true);FileWriter (FileDescriptor fdObj) 用FileDescriptor對(duì)象創(chuàng)建FileWriter流。例如: FileWriter dataout = new FileWriter (); FileWriter (String name) 用指定文件名創(chuàng)建FileWriter流,向文件輸出數(shù)據(jù),與FileWriter (File file)方法類似
23、。例如: FileWriter dataout = new FileWriter (""); FileWriter (String name, boolean append) 參數(shù)append為false時(shí),與FileWriter (String name)相同。參 數(shù)append為true時(shí),表示向文件添加數(shù)據(jù)。例如: FileWriter dataout = new FileWriter ("",true);4、FileWriter對(duì)象操作FileWriter對(duì)象常用操作如下: close():關(guān)閉FileWriter流。 flush():刷新流,即
24、向流中的數(shù)據(jù)全部寫入文件。 getEncoding():返回文件采用的字符集。 write(int n):向文件寫入一個(gè)字符,n為字符的Unicode碼。 write(char b):將字符數(shù)組b 寫入文件。 write(char b, int bindex,int count):將字符數(shù)組b中下標(biāo)從bindex開始 的count個(gè)元素寫入文件。 write(String b):將字符串b寫入文件。 write(String b, int index,int count):將字符串b中序號(hào)從index開始的 count個(gè)字符寫入文件。 append(char c):將字符c寫入文件。 appe
25、nd(CharSequence b):將字符序列b寫入文件。String類型為一個(gè) 典型的實(shí)現(xiàn)了CharSequence接口的類。 append(CharSequence b, int start,int end):將字符串序列b中下標(biāo) start開始到end的字符寫入文件。 緩沖流前面前面介紹的字節(jié)流和字符流均未使用內(nèi)存緩沖區(qū),也就是說(shuō),每 次讀寫一個(gè)字節(jié)或字符都是直接訪問(wèn)文件,這會(huì)導(dǎo)致大量數(shù)據(jù)讀寫時(shí) 頻繁訪問(wèn)文件。緩沖輸入輸出流則是在內(nèi)存中創(chuàng)建一個(gè)緩沖區(qū)來(lái)緩存 數(shù)據(jù)。程序只是從緩沖區(qū)讀取數(shù)據(jù),不直接訪問(wèn)文件。輸入數(shù)據(jù)時(shí), 緩沖流在緩沖區(qū)為空時(shí)自動(dòng)從文件讀取數(shù)據(jù)填滿緩沖區(qū)。輸出數(shù)據(jù)時(shí), 數(shù)據(jù)
26、首先寫入緩沖區(qū),緩沖區(qū)填滿或執(zhí)行flush方法時(shí),緩沖流將緩 沖的數(shù)據(jù)寫入文件。 Java提供了4種緩沖流,BufferedInputStream和 Java 4 BufferedInputStream BufferedOutputStream用于緩沖字節(jié)流,BufferedReader和 BufferedWriter用于緩沖字符流。 可以創(chuàng)建默認(rèn)大小緩沖區(qū)的緩沖流。例如: BufferedReader in = new BufferedReader(new FileReader(""); 也可創(chuàng)建指定大小緩沖區(qū)的緩沖流。例如: BufferedWriter out = n
27、ew BufferedWriter(new FileWriter(""),100); 格式化輸入輸出字節(jié)流和字符流只是按字節(jié)或字符讀寫文件。 如果要從讀取特定類型的數(shù)據(jù),例如讀一個(gè) 整數(shù),則需要使用Scanner對(duì)象。在將特 定類型的數(shù)據(jù)寫入文件,則可使用 PrintWriter或PrintStream對(duì)象完成輸出。 格式化輸入Scanner對(duì)象可以按基本數(shù)據(jù)類型從字符串 或各種輸入流中解析數(shù)據(jù)。1、創(chuàng)建Scanner對(duì)象Scanner類的構(gòu)造方法有兩種基本格式: Scanner(數(shù)據(jù)源) Scanner(數(shù)據(jù)源,字符集) 創(chuàng)建Scanner對(duì)象的數(shù)據(jù)源可以是一個(gè)字符串、F
28、ile對(duì)象、 InputStream對(duì)象、InputStream子類對(duì)象、Readable對(duì)象 或ReadableByteChannel對(duì)象。例如: Scanner in1=new Scanner("1 one 2 two"); Scanner in2=new Scanner(new File(""); Scanner in3=new Scanner(new FileReader(""); Scanner in4=new Scanner(new FileReader(""); Scanner in5=new Sca
29、nner(new FileInputStream(""); Scanner in6=new Scanner(new BufferedReader(new FileReader("");在創(chuàng)建訪問(wèn)各種流的Scanner對(duì)象時(shí),可用一個(gè)字符 串指明數(shù)據(jù)源采用的字符集,默認(rèn)為本地字符集。 從文件讀出字節(jié)時(shí),將其轉(zhuǎn)換為指定字符集的字符。 例如: Scanner in2=new Scanner(new File(""),"GB2312"); /指定 采用的字符集 Scanner對(duì)象在不使用之后,應(yīng)調(diào)用close方法將其關(guān) 閉
30、。例如: in1close();2、從數(shù)據(jù)源解析數(shù)據(jù)Scanner對(duì)象用一系列的next方法從數(shù)據(jù)源解析各種類型的數(shù)據(jù): next():從數(shù)據(jù)源讀取一個(gè)字符串。 nextLine():將當(dāng)前位置到換行符號(hào)之前的全部?jī)?nèi)容作為一個(gè) 字符串返回。 nextBoolean() nextBoolean():從數(shù)據(jù)源讀取一個(gè)boolean類型值。 boolean nextByte():從數(shù)據(jù)源讀取一個(gè)byte類型值。 nextDouble():從數(shù)據(jù)源讀取一個(gè)double類型值。 nextFloat():從數(shù)據(jù)源讀取一個(gè)float類型值。 nextInt():從數(shù)據(jù)源讀取一個(gè)int類型。 nextLong
31、():從數(shù)據(jù)源讀取一個(gè)long類型值。 nextShort():從數(shù)據(jù)源讀取一個(gè)short類型值。在使用各種next方法讀取數(shù)據(jù)時(shí),可能會(huì)發(fā)生下列三 種異常: InputMismatchException:如果下一個(gè)標(biāo)記不 能轉(zhuǎn)換為指定類型的數(shù)據(jù),或者超出了數(shù)據(jù)范圍。 NoSuchElementException:數(shù)據(jù)源中已無(wú)數(shù)據(jù) 可讀。 IllegalStateException:Scanner對(duì)象已被關(guān)閉。 這3種異常屬于不檢查異常,可以不捕捉處理。 格式化輸出PrintStream和PrintWriter類提供了格式化輸出方法,可用print、 printf、println和format
32、方法輸出各種基本數(shù)據(jù)類型的數(shù)據(jù),也可 輸出對(duì)象。printf和format方法用法相同,均可使用格式字符串來(lái) 控制數(shù)據(jù)的輸出格式。 提示: 提示:關(guān)于格式字符串、print、printf和println方法的使用請(qǐng)參考 中的相關(guān)內(nèi)容。 println方法會(huì)在輸出數(shù)據(jù)后添加一個(gè)換行符號(hào)。print、printf和 format方法不自動(dòng)添加換行符號(hào),可在輸出數(shù)據(jù)中包含換行符號(hào)來(lái) 實(shí)現(xiàn)換行。 PrintStream對(duì)象將數(shù)據(jù)轉(zhuǎn)換為字節(jié)流輸出,PrintWriter對(duì)象將數(shù) 據(jù)轉(zhuǎn)換為字符流輸出。字符和字符串按照默認(rèn)的本地字符集轉(zhuǎn)換為字 節(jié)??梢栽趧?chuàng)建PrintStream或PrintWriter對(duì)象
33、,或者在printf和 format方法中用Locale參數(shù)指定轉(zhuǎn)換字符使用的字符集。 如果PrintStream對(duì)象在創(chuàng)建時(shí)運(yùn)行自動(dòng)刷新,則在輸出一個(gè)字節(jié)數(shù) 組、調(diào)用println方法,或者輸出一個(gè)換行符號(hào)時(shí),可以自動(dòng)調(diào)用 flush方法。PrintWriter對(duì)象只會(huì)在調(diào)用println、printf或format 方法時(shí)自動(dòng)調(diào)用flush方法。 命令行輸入輸出命令行輸入輸出可、 和Console對(duì)象完成。代表標(biāo)準(zhǔn)輸入設(shè)備,即鍵盤。 和用法相同,都代表標(biāo)準(zhǔn)輸出設(shè)備, 即顯示器。和的具體用法請(qǐng)參考第2 章節(jié)。 Console(控制臺(tái))對(duì)象即可代表鍵盤,又可代表顯示器,即 可以完成命令行的輸入
34、和輸出。System對(duì)象的console方法 用于獲得一個(gè)控制臺(tái)對(duì)象實(shí)例,例如: Console con = (); 控制臺(tái)對(duì)象可以用printf和format方法輸出數(shù)據(jù),與 PrintStream對(duì)象的printf和format方法相同。類似的,可以 執(zhí)行flush方法刷新輸出,將緩存的控制臺(tái)對(duì)象輸出數(shù)據(jù)輸出 到顯示器。1、使用Reader對(duì)象輸入控制臺(tái)對(duì)象的reader方法可以返回一個(gè)Reader對(duì) 象,再使用Scanner對(duì)象即可完成輸入。例如:Scanner input= new Scanner(); ("請(qǐng)輸入一個(gè)字符串、一個(gè)整數(shù)和一個(gè) 小數(shù):"); Strin
35、g str=(); int n=(); double m=(); ("剛輸入的數(shù)據(jù):n %sn %dn %f n",str,n,m);控制臺(tái)對(duì)象返回的Reader對(duì)象與鍵盤關(guān)聯(lián),輸入 時(shí)按回車鍵結(jié)束。2、讀一行數(shù)據(jù)控制臺(tái)對(duì)象的readerLine方法可讀取一行數(shù)據(jù),即將回車之前 的所有符號(hào)作為一個(gè)字符串返回。例如: ("請(qǐng)輸入一個(gè)字符串:"); String str1=(); readerLine readerLine方法可以輸出一個(gè)提示字符串。例如: String str2=("請(qǐng)輸入一個(gè)字符串:"); 還可以為readerLine
36、方法指定一個(gè)格式化的字符串,與printf 方法參數(shù)類似。例如: String str2=("請(qǐng)輸入%s的姓名:","湯姆");3、密碼輸入控制臺(tái)對(duì)象的readPassword方法在輸入數(shù)據(jù)時(shí), 不在顯示器上顯示輸入的數(shù)據(jù)。例如: char str3=("請(qǐng)輸密碼:"); readPassword方法返回一個(gè)char數(shù)組。與 readerLine方法類似,readPassword方法可以 指定一個(gè)格式化的字符串作參數(shù)。例如: char str3=("請(qǐng)輸入用戶%s的密碼: ","湯姆"); 類型
37、化輸入/輸出類型化輸入/輸出指從數(shù)據(jù)源讀/寫各種基本 數(shù)據(jù)類型或String類型的數(shù)據(jù)。 DataInput和DataOutput接口定義了讀/ 寫數(shù)據(jù)流的方法,本節(jié)介紹這兩個(gè)接口的具 體實(shí)現(xiàn)類:DataInputStream(數(shù)據(jù)輸入 流)和DataOutputStream.(數(shù)據(jù)輸出 流)。 數(shù)據(jù)輸出流DataOutputStream首先將數(shù)據(jù)轉(zhuǎn)換為二 進(jìn)制形式,然后按字節(jié)輸出。字符或字符串 按照字符的Unicode編碼輸出。 DataOutputStream輸出的數(shù)據(jù)為二進(jìn)制 形式,不能直接查看。可以用 DataInputStream從文件讀出 DataOutputStream輸出的數(shù)據(jù)
38、。1、創(chuàng)建數(shù)據(jù)輸出流可用一個(gè)OutputStream對(duì)象,或 OutputStream類的子類對(duì)象來(lái)創(chuàng)建數(shù)據(jù)輸 出流。例如: DataOutputStream out=new DataOutputStream(new BufferedOutputStream (new FileOutputStream("");2、輸出數(shù)據(jù)DataOutputStream對(duì)象可用多種方法輸出數(shù)據(jù): write(byte b, int start, int n):將字節(jié)數(shù)組b中從下標(biāo)start開始的n個(gè)元 素寫入輸出流。參數(shù)start和n可以省略,省略時(shí)輸出數(shù)組b中的全部數(shù)據(jù)。 write(i
39、nt n):將一個(gè)字節(jié)寫入輸出流。如果參數(shù)n的二進(jìn)制超過(guò)一個(gè)字節(jié), 則只將最低字節(jié)寫入輸出流,其他字節(jié)被忽略。例如,321的二進(jìn)制為 101000001,用write輸出321時(shí),只將最低8位01000001輸出。 writeBoolean(boolean f):將一個(gè)boolean值作為一個(gè)字節(jié)寫入輸出流,參 數(shù)f為true時(shí)輸出值為1,f為false時(shí)輸出值為0。 writeByte(int n):將n的最低字節(jié)寫入輸出流。 writeBytes(String s):將字符串中的字符按順序?qū)懭胼敵隽?,每個(gè)字符 Unicode碼的高8位被忽略。 writeChar(int v):將一個(gè)字符(
40、兩個(gè)字節(jié))寫入輸出流,先輸出高8位。 writeChars(String s):將字符串中寫入輸出流,相等于對(duì)每個(gè)字符調(diào)用 writeChar方法。writeDouble(double v):將一個(gè)double類型數(shù)據(jù)(8個(gè)字節(jié))寫入 輸出流,先輸出高8位。 writeFloat(float v):將一個(gè)float類型數(shù)據(jù)(4個(gè)字節(jié))寫入輸出流, 先輸出高8位。 writeInt(int v):將一個(gè)int類型數(shù)據(jù)(4個(gè)字節(jié))寫入輸出流,先輸 出高8位。 writeLong(long v):將一個(gè)long類型數(shù)據(jù)(8個(gè)字節(jié))寫入輸出流, 先輸出高8位。 writeShort(int v):將一
41、個(gè)short類型數(shù)據(jù)(兩個(gè)字節(jié))寫入輸出流, 先輸出高8位。 writeUTF(String str):將字符串按UTF-8編碼格式寫入輸出流。先 輸出字符串長(zhǎng)度,占兩個(gè)字節(jié),然后輸出字符串中的字符。 DataOutputStream對(duì)象會(huì)用一個(gè)計(jì)數(shù)器統(tǒng)計(jì)寫入輸出流的字節(jié)數(shù), 可用size方法返回當(dāng)前已輸出的字節(jié)數(shù)。 數(shù)據(jù)輸入流DataInputStream根據(jù)數(shù)據(jù)類型,從輸入 流讀取對(duì)應(yīng)的字節(jié)數(shù),然后將其轉(zhuǎn)換為對(duì)應(yīng) 數(shù)據(jù)類型的數(shù)據(jù)。1、創(chuàng)建數(shù)據(jù)輸入流可用一個(gè)InputStream對(duì)象或 InputStream類的子類對(duì)象來(lái)創(chuàng)建數(shù)據(jù)輸 入流。例如: DataInputStream in=new
42、 DataInputStream(new BufferedInputStream (new FileInputStream("");2、輸入數(shù)據(jù)DataInputStream對(duì)象可用多種方法讀取數(shù)據(jù):read(byte b):從輸入流讀取個(gè)字節(jié)存入數(shù)組。 read(byte b, int start, int n):從輸入流讀取n個(gè)字節(jié),存入數(shù)組b 從下標(biāo)start開始的n個(gè)元素中。 readBoolean():讀取一個(gè)字節(jié),若該字節(jié)為非零值,則返回true,否 則返回false。 readByte():讀一個(gè)字節(jié),轉(zhuǎn)換為byte值。 readChar():讀兩個(gè)字節(jié),作為
43、字符的Unicode碼,返回該字符。 readDouble():讀8個(gè)字節(jié),轉(zhuǎn)換為double值。 readFloat():讀4個(gè)字節(jié),轉(zhuǎn)換為float值。 readInt():讀4個(gè)字節(jié),轉(zhuǎn)換為int值。 readLong():讀8個(gè)字節(jié),轉(zhuǎn)換為long值。 readShort():讀兩個(gè)字節(jié),轉(zhuǎn)換為short值。 readUTF():讀一個(gè)字符串。首先讀兩個(gè)字節(jié),轉(zhuǎn)換為一個(gè)無(wú)符號(hào)整數(shù), 該數(shù)作為要讀取的字符個(gè)數(shù),然后讀取對(duì)應(yīng)個(gè)數(shù)的字符組成字符串。 對(duì)象序列化對(duì)象序列化(serialization,也稱串行化) 指將對(duì)象寫入文件,從文件中讀出對(duì)象稱為 序列化讀出。包中的 ObjectOutp
44、utStream類提供了序列化概 念,ObjectInputStream類提供了序列化 讀出功能。 讀寫對(duì)象各種基本數(shù)據(jù)類型的數(shù)組、字符串和實(shí)現(xiàn)了 接口的類對(duì)象,都支持序列 化。如果對(duì)象的成員也是一個(gè)對(duì)象,則該成員對(duì)象 的類也應(yīng)該實(shí)現(xiàn)Serializable接口,否則對(duì)象不能 序列化。要保證一個(gè)對(duì)象被序列化,對(duì)象的類、基 類以及所有的超類,都應(yīng)該實(shí)現(xiàn)Serializable接口。 說(shuō)明: 說(shuō)明:被聲明為static或transient的成員不會(huì)被序 列化。若對(duì)象中的某些字段不需要被序列化,則可 將其聲明為transient,并為其提供默認(rèn)的初始值。1、使自定義類支持序列化用戶自定義的類只需要實(shí)
45、現(xiàn)Serializable接口,其對(duì)象便可序 列化。Java序列化的簡(jiǎn)單指出在于,Serializable接口不包含 任何方法。實(shí)現(xiàn)Serializable接口的類對(duì)象均按默認(rèn)方式進(jìn)行 序列化。 例如,下面是一個(gè)實(shí)現(xiàn)了Serializable接口的student類: public class student implements 2、將對(duì)象寫入文件ObjectOutputStream類的構(gòu)造方法使用一個(gè)OutputStream對(duì)象 作為參數(shù)來(lái)指定要訪問(wèn)的文件。例如:ObjectOutputStream out=new ObjectOutputStream(new BufferedOutputS
46、tream (new FileOutputStream("");該語(yǔ)句用一個(gè)緩沖的文件輸出流對(duì)象創(chuàng)建對(duì)象輸出流。如果為 FileOutputStream構(gòu)造方法指定參數(shù)是目錄、路徑有錯(cuò)或其他原因 不能創(chuàng)建文件時(shí),會(huì)拋出FileNotFoundException異常,應(yīng)該捕捉處 理或聲明方法拋出該異常。FileNotFoundException類是 IOException類的子類,如果處理或聲明拋出了IOException異常, 則可同時(shí)處理FileNotFoundException異常。 ObjectOutputStream對(duì)象的writeObject方法用于將對(duì)象寫入輸出
47、 流。例如:student lm=new student(2008001,"李明","男"); (lm); /輸出自定義類對(duì)象writeObject方法可能拋出3種異常:InvalidClassException:對(duì)象類本身定義有錯(cuò)時(shí)拋出 該異常。 NotSerializableException:對(duì)象類沒(méi)有實(shí)現(xiàn) Serializable接口時(shí)拋出該異常。 IOException:文件輸出發(fā)生錯(cuò)誤時(shí)拋出該異常。前兩種異常類都是IOException類的間接子類,如 果要在程序中捕捉處理這兩種異常,應(yīng)將對(duì)應(yīng)的 catch代碼塊寫在IOException異常
48、之前。例如: student lm=new student(2008001,"李明","男"); try (lm); catch(InvalidClassException e) (); catch(NotSerializableException e) (); catch(IOException e) (); /輸出自定義類對(duì)象3、從文件讀出對(duì)象與對(duì)象輸出流類似,ObjectInputStream類的構(gòu)造方法使用 一個(gè)InputStream對(duì)象作為參數(shù)來(lái)指定要訪問(wèn)的文件。例如: ObjectInputStream in=new ObjectInputS
49、tream(new BufferedInputStream (new FileInputStream(""); 該語(yǔ)句用一個(gè)緩沖的文件輸入流對(duì)象創(chuàng)建對(duì)象輸入流。如果為 FileInputStream構(gòu)造方法指定參數(shù)是目錄、路徑有錯(cuò)或其他 原因不能創(chuàng)建文件時(shí),會(huì)拋出FileNotFoundException異常, 應(yīng)該捕捉處理或聲明方法拋出該異常。 FileNotFoundException類是IOException類的子類,如果處 理或聲明拋出了IOException異常,則可同時(shí)處理 FileNotFoundException異常。 ObjectInputStream對(duì)象
50、的readObject方法用于輸入流讀取 對(duì)象。例如: student lm=(student)();readObject方法返回一個(gè)Object類型的對(duì)象,所以應(yīng)將其轉(zhuǎn)換為 相應(yīng)的數(shù)據(jù)類型。 readObject方法可能拋出5種異常: ClassNotFoundException:找不到序列化對(duì)象的類時(shí)拋出該 異常。 InvalidClassException:對(duì)象類本身定義有錯(cuò)時(shí)拋出該異常。 InvalidClassException StreamCorruptedException:序列化時(shí)會(huì)向文件寫入對(duì)象 的控制信息,在讀出時(shí),如果控制信息與序列化對(duì)象不匹配時(shí) 拋出該異常。 Optio
51、nalDataException:流中讀出的是基本類型的數(shù)據(jù),不 是對(duì)象時(shí)拋出該異常。 IOException:文件輸入發(fā)生錯(cuò)誤時(shí)拋出該異常。ClassNotFoundException類是Exception 類的子類,該異常應(yīng)單獨(dú)處理。 InvalidClassException、 StreamCorruptedException和 OptionalDataException類是 IOException類的間接,在使用catch代碼 塊處理異常時(shí)應(yīng)注意先后順序。 讀寫基本類型數(shù)據(jù)ObjectInputStream類提供了一系列的 read方法從對(duì)象輸入流讀取基本類型數(shù)據(jù), 這些方法與Data
52、InputStream類提供的數(shù) 據(jù)讀取方法類似。ObjectOutputStream 類提供了一系列的write方法向?qū)ο筝敵隽?寫入基本類型數(shù)據(jù),這些方法與 DataOouputStream類提供的數(shù)據(jù)輸出方 法類似。 重復(fù)序列化對(duì)象將一個(gè)對(duì)象重復(fù)寫入文件時(shí),默認(rèn)情況下,文件 中只保存第一次寫入的數(shù)據(jù)。重復(fù)寫入對(duì)象時(shí), 即使對(duì)象數(shù)據(jù)經(jīng)過(guò)了修改,也只在文件中保存指 向第一次寫入數(shù)據(jù)的指針。如果要保存修改之后 的對(duì)象,則需要在writeObject方法之前調(diào)用 writeObject reset方法。reset方法將對(duì)象輸出流復(fù)位,相當(dāng) 于沒(méi)有輸出過(guò)任何內(nèi)容,從而可以輸出重復(fù)的對(duì) 象。rese
53、t方法在文件中插入一個(gè)復(fù)位標(biāo)志,對(duì)象 輸入流遇到復(fù)位標(biāo)志時(shí)執(zhí)行復(fù)位操作,從而可讀 出重復(fù)對(duì)象。 隨機(jī)讀寫文件RandomAccessFile類提供了隨機(jī)讀寫文件功能。 RandomAccessFile對(duì)象維護(hù)一個(gè)文件指針,文件指針指向當(dāng)前讀 寫位置。執(zhí)行read或write方法后,文件指針自動(dòng)向后(文件末尾) 移動(dòng)。也可在執(zhí)行read或write方法前,用seek方法設(shè)置文件指針 位置。 RandomAccessFile對(duì)象在打開文件流之后,允許將數(shù)據(jù)寫入流, 也可從流讀出數(shù)據(jù)。在創(chuàng)建RandomAccessFile對(duì)象時(shí),應(yīng)指定文 件訪問(wèn)模式。創(chuàng)建RandomAccessFile對(duì)象的語(yǔ)法格
54、式如下: RandomAccessFile RandomAccessFile raf=new RandomAccessFile(file,mode); 其中,參數(shù)file指定訪問(wèn)的文件,可以是一個(gè)File對(duì)象或描述文件名 的字符串。參數(shù)mode是一個(gè)字符串,指定文件訪問(wèn)模式??捎孟铝?訪問(wèn)模式字符串:"r":只允許從文件讀數(shù)據(jù)。若試圖向文件寫入數(shù)據(jù),會(huì)產(chǎn)生 IOException異常。 "rw":可讀寫文件。若文件不存在,會(huì)創(chuàng)建一個(gè)新文件。 內(nèi)存映射文件內(nèi)存映射文件指可以利用系統(tǒng)虛擬內(nèi)存將文 件或文件的一部分“映射”到內(nèi)存。這樣讀 寫文件就像訪問(wèn)內(nèi)存一樣
55、,大大提高文件讀 寫速度。 包中的MappedByteBuffer類用 于實(shí)現(xiàn)內(nèi)存映射。MappedByteBuffer派 生自ByteBuffer類(ByteBuffer類派生自 Buffer類)。 建立內(nèi)存映射要建立內(nèi)存映射,首先需要獲得文件通道 (FileChannel)??捎肍ileInputStream、 FileOutputStream或RandomAccessFile類的 getChannel方法獲得文件通道。例如: RandomAccessFile raf=new RandomAccessFile("","rw"); FileChanne
56、l fc=(); 然后,調(diào)用FileChannel類的map方法建立內(nèi)存映 射MappedByteBuffer。例如: MappedByteBuffer buffer=( _WRITE,0,512);map方法的第一個(gè)參數(shù)指定映射模式,第二個(gè)參數(shù)指 定映射區(qū)域在文件中的開始位置,第三個(gè)參數(shù)指定 緩沖區(qū)大小。有三種映射模式: :只能從緩沖區(qū)讀數(shù)據(jù)。 若試圖將數(shù)據(jù)寫入緩沖區(qū),會(huì)拋出 ReadOnlyBufferException異常。 :可讀,也可寫。對(duì)緩 沖區(qū)的修改最終會(huì)寫入文件。 :私有,對(duì)緩沖區(qū)的修改不 會(huì)寫入文件。 讀/寫緩沖區(qū)MappedByteBuffer類繼承了ByteBuffer
57、和Buffer類的一系列g(shù)et和put方法來(lái)讀/寫 緩沖區(qū)數(shù)據(jù)。1、讀字節(jié)數(shù)組有兩種讀字節(jié)數(shù)組的方法: get(byte a):根據(jù)字節(jié)數(shù)組a的長(zhǎng)度,從緩沖區(qū) 讀出字節(jié)存入數(shù)組元素。 get(byte a,int start,int n):從緩沖區(qū)讀出字 節(jié)存入下標(biāo)從start開始的數(shù)組元素中,最多讀取n 個(gè)字節(jié)。 例如: byte a=new byte5; (a); (a,2,3);2、寫字節(jié)數(shù)組有兩種方法將字節(jié)數(shù)組寫入緩沖區(qū): put(byte a):將字節(jié)數(shù)組a中的數(shù)據(jù)寫入緩沖區(qū)。 put (byte a,int start,int n):將下標(biāo)從start 開始的n個(gè)數(shù)組元素寫入緩沖區(qū)
58、。 例如: byte b=1,2,3,4,5; (b); /輸出字 節(jié)數(shù)組 (b,2,3); /輸出 b2、b3、b43、按數(shù)據(jù)類型讀取數(shù)據(jù)下列方法提供了按數(shù)據(jù)類型讀取數(shù)據(jù)功能: get():讀一個(gè)byte類型數(shù)據(jù)。 getChar():讀一個(gè)char類型數(shù)據(jù)。 getShort():讀一個(gè)short類型數(shù)據(jù)。 getInt():讀一個(gè)int類型數(shù)據(jù)。 getLong():讀一個(gè)long類型數(shù)據(jù)。 getFloat():讀一個(gè)float類型數(shù)據(jù)。 getDouble():讀一個(gè)Double類型數(shù)據(jù)。這些方法不帶參數(shù)時(shí),從文件指針當(dāng)前位置讀 取數(shù)據(jù)。讀出數(shù)據(jù)后,文件指針根據(jù)數(shù)據(jù)類 型長(zhǎng)度自動(dòng)修改
59、指針位置。例如: int n=(); /從默認(rèn)位置讀一個(gè)int值 也可用一個(gè)參數(shù)指定讀取位置,緩沖區(qū)中的第 1個(gè)字節(jié)的索引位置為0。例如: int n=(5); / 從緩沖區(qū)的第5個(gè)字節(jié)之后開始讀一個(gè)int值4、按數(shù)據(jù)類型寫數(shù)據(jù)下列方法提供了按數(shù)據(jù)類型將數(shù)據(jù)寫入緩沖區(qū): put (byte n):將一個(gè)byte類型數(shù)據(jù)寫入緩沖區(qū)。 putChar(char c):將一個(gè)char類型數(shù)據(jù)寫入緩沖區(qū)。 putShort(short n):將一個(gè)short類型數(shù)據(jù)寫入緩沖區(qū)。 putInt(int n):將一個(gè)int類型數(shù)據(jù)寫入緩沖區(qū)。 putLong(long n):將一個(gè)long類型數(shù)據(jù)寫入緩沖區(qū)。 putFloat(float x):將一個(gè)float類型數(shù)據(jù)寫入緩沖區(qū)。 putDouble(double x):將一個(gè)Double類型數(shù)據(jù)寫入緩沖區(qū)。這些方法默認(rèn)在文件指針當(dāng)前位置寫入數(shù)據(jù)。寫入數(shù) 據(jù)后,文件指針根據(jù)數(shù)據(jù)類型長(zhǎng)度自動(dòng)修改指針位 置。例如: int n=100; (n); / 將100寫入緩沖區(qū),文件指針增加4個(gè)字節(jié) 也可增加一個(gè)參數(shù)指定數(shù)據(jù)寫入位置。例如: int n=100,index=5; (index,n); / 在第5個(gè)字節(jié)后寫入1005、其他讀寫控制方法mark():在文件指針當(dāng)前位置設(shè)置一個(gè)標(biāo) 記。 reset():將文件指針指向
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代企業(yè)如何通過(guò)公關(guān)活動(dòng)吸引目標(biāo)客戶
- 理論與實(shí)踐在文化傳承中尋求創(chuàng)新發(fā)展
- 國(guó)慶節(jié)鮮奶活動(dòng)方案策劃
- Module5 Unit1 He is playing the suona,but the phone rings(說(shuō)課稿)-2023-2024學(xué)年外研版(三起)英語(yǔ)六年級(jí)下冊(cè)
- 8《上課了》說(shuō)課稿-2023-2024學(xué)年道德與法治一年級(jí)上冊(cè)統(tǒng)編版001
- 2023九年級(jí)數(shù)學(xué)上冊(cè) 第23章 圖形的相似23.4 中位線說(shuō)課稿 (新版)華東師大版
- 9 知法守法 依法維權(quán) 說(shuō)課稿 -2023-2024學(xué)年道德與法治六年級(jí)上冊(cè)(統(tǒng)編版)
- 2024年四年級(jí)英語(yǔ)上冊(cè) Module 4 The world around us Unit 11 Shapes說(shuō)課稿 牛津滬教版(三起)
- Unit8 I can do this for you 第三課時(shí)(說(shuō)課稿)-2024-2025學(xué)年譯林版(三起)(2024)英語(yǔ)三年級(jí)上冊(cè)
- 3 光的傳播會(huì)遇到阻礙嗎 說(shuō)課稿-2024-2025學(xué)年科學(xué)五年級(jí)上冊(cè)教科版
- 城市基礎(chǔ)設(shè)施修繕工程的重點(diǎn)與應(yīng)對(duì)措施
- GB 12710-2024焦化安全規(guī)范
- 2022年中考化學(xué)模擬卷1(南京專用)
- 2023年主治醫(yī)師(中級(jí))-眼科學(xué)(中級(jí))代碼:334考試歷年真題集錦附答案
- 電力安全工作規(guī)程-(電網(wǎng)建設(shè)部分)
- 新加坡小學(xué)二年級(jí)英語(yǔ)試卷practice 2
- 小學(xué)五年級(jí)英語(yǔ)20篇英文閱讀理解(答案附在最后)
- 2023年遼寧鐵道職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ))試題庫(kù)含答案解析
- GB/T 23800-2009有機(jī)熱載體熱穩(wěn)定性測(cè)定法
- T-SFSF 000012-2021 食品生產(chǎn)企業(yè)有害生物風(fēng)險(xiǎn)管理指南
- 水庫(kù)工程施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論