版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο笈c多線程綜合實(shí)驗(yàn)-輸入輸出流,教師:段鵬飛,實(shí)驗(yàn) 3-實(shí)驗(yàn)?zāi)康?了解Java中I/O流的概念和種類;掌握字節(jié)流處理和字符流處理,包括File類,InputStream/OutputStream及其子類,Reader/Writer及其子類;熟練掌握文件的順序處理,隨機(jī)訪問處理;熟悉對(duì)象串行化的概念和方法。,實(shí)驗(yàn)內(nèi)容,(1)完善showFileList()方法,實(shí)現(xiàn)檔案信息瀏覽,在未講數(shù)據(jù)庫之前,系統(tǒng)中已存在檔案信息放置在Ha
2、shtable中,提供新版DataProcessing類,該類實(shí)現(xiàn)了對(duì)應(yīng)數(shù)據(jù)的查找、插入操作。(2)完善uploadFile()方法,實(shí)現(xiàn)檔案數(shù)據(jù)的上傳,在未講網(wǎng)絡(luò)之前,該方法只需實(shí)現(xiàn)在指定目錄中讀取文件,并將其拷貝至其他目錄中,此外還需將相關(guān)檔案信息寫入對(duì)應(yīng)Hashtable中。(3)完善downloadFile(),實(shí)現(xiàn)檔案數(shù)據(jù)下載,目前只需要實(shí)現(xiàn)根據(jù)檔案號(hào),在Hashtable中查找得到文件位置,然后讀取文件并將其拷貝至指
3、定目錄中。,流的類型,根據(jù)流動(dòng)方向的不同,流分為輸入流和輸出流;對(duì)于輸入和輸出流,由于傳輸格式的不同,又分為字節(jié)流和字符流:字節(jié)流是指8位的通用字節(jié)流,以字節(jié)為基本單位,在java.io包中,對(duì)于字節(jié)流進(jìn)行操作的類大部分繼承于InputStream(輸入字節(jié)流)類和OutputStream(輸出字節(jié)流)類;字符流是指16位的Unicode字符流,以字符(兩個(gè)字節(jié))為基本單位,非常適合處理字符串和文本,對(duì)于字符流進(jìn)行操作的類大部分繼
4、承于Reader(讀取流)類和Writer(寫入流)類。,字節(jié)流和字符流,Java中的流分為兩種,一種是字節(jié)流,另一種是字符流,分別由四個(gè)抽象類來表示(每種流包括輸入和輸出兩種所以一共四)Java中其他多種多樣變化的流均是由它們派生出來的,節(jié)點(diǎn)流類型,處理流類型,FileInputStream類的構(gòu)造方法,FileInputStream類的構(gòu)造方法有3種重載方式,以下是常用的幾種。,FileInputStream類的常用方法,publ
5、ic class FileInputStreamDemo1 { public static void main(String[] args) { try { File file = new File("test.txt"); //創(chuàng)建文件對(duì)象 //使用文件對(duì)象創(chuàng)建文件輸入流對(duì)象,相當(dāng)于打開文件 FileInputStream fis = new FileInputSt
6、ream(file); for (int i = 0; i < file.length(); i++) { char ch = (char)(fis.read()); //循環(huán)讀取字符 System.out.print(ch); } System.out.println(); fis.close(); //關(guān)閉流 } catch (F
7、ileNotFoundException fnfe) { System.out.println("文件打開失敗。"); } catch (IOException ioe) { ioe.printStackTrace(); } }},,,FileInputStream對(duì)象讀文件示例1,public class FileInputStreamDemo2 { public
8、static void main(String[] args) { try { File file = new File("test.txt"); //創(chuàng)建文件對(duì)象 FileInputStream fis = new FileInputStream(file); //根據(jù)文件的字節(jié)長度創(chuàng)建字節(jié)數(shù)組 byte[] buf = new byte[(int)(fil
9、e.length())]; fis.read(buf); //讀取文件中的數(shù)據(jù)存放到字節(jié)數(shù)組中 String str = new String(buf); //利用字節(jié)數(shù)組創(chuàng)建字符串 System.out.println(str); //打印字符串 fis.close(); //關(guān)閉流 } catch (FileNotFoundException fnfe) {
10、 System.out.println("文件打開失敗。"); } catch (IOException ioe) { ioe.printStackTrace(); } }},,,FileInputStream對(duì)象讀文件示例2,FileOutputStream類的構(gòu)造方法,FileOutputStream類的構(gòu)造方法有5種重載方式,以下是常用的幾種。,FileOutputSt
11、ream類的常用方法,public class FileOutputStreamDemo1{ //在函數(shù)內(nèi)部不進(jìn)行異常處理,將異常拋出函數(shù)外部 public static void main(String[] args) throws IOException { String str = "Hello world!"; File file = new File("test.tx
12、t"); //創(chuàng)建文件對(duì)象 //通過文件對(duì)象創(chuàng)建文件輸出流對(duì)象 //附加第二個(gè)參數(shù)true,指定進(jìn)行文件追加,默認(rèn)為不追加 FileOutputStream fos = new FileOutputStream(file, true); //逐個(gè)將字符寫入到文件中 for (int i = 0; i < str.length(); i++) { fo
13、s.write(str.charAt(i)); } fos.close(); //關(guān)閉流 }},,,,FileOutputStream對(duì)象寫文件示例1,public class FileOutputStreamDemo2{ //在函數(shù)內(nèi)部不進(jìn)行異常處理,將異常拋出函數(shù)外部 public static void main(String[] args) throws Exception {
14、String str = "I Love Java"; //通過文件名創(chuàng)建文件輸出流對(duì)象 FileOutputStream fos = new FileOutputStream("test.txt"); //將字符串轉(zhuǎn)化為字節(jié)數(shù)組 byte[] buffer = str.getBytes(); //將字節(jié)數(shù)組中包含的數(shù)據(jù)一次性寫入到文件中
15、fos.write(buffer); //關(guān)閉流 fos.close(); }},,,FileOutputStream對(duì)象寫文件示例2,FileInputStream類和FileOutputStream類是成對(duì)出現(xiàn)的,一個(gè)進(jìn)行輸入(讀文件)操作,一個(gè)進(jìn)行輸出(寫文件)操作;由于采用字節(jié)方式進(jìn)行數(shù)據(jù)傳輸,不必考慮數(shù)據(jù)的格式問題,這兩個(gè)類對(duì)文件操作的效率較高;可以使用這兩個(gè)類完成復(fù)制文件的操作。,FileInput
16、Stream/FileOutputStream小結(jié),復(fù)制文件示例,public class CopyFileDemo { public static void main(String[] args) throws IOException { File srcFile = new File("src.dat"); //源文件對(duì)象 File destFile = new File("d
17、est.dat"); //目標(biāo)文件對(duì)象 if (!(destFile.exists())) { //判斷目標(biāo)文件是否存在 destFile.createNewFile(); //如果不存在則創(chuàng)建新文件 } //使用源文件對(duì)象創(chuàng)建文件輸入流對(duì)象 FileInputStream fis = new FileInputStream(srcFile); //使用目標(biāo)文件對(duì)象創(chuàng)建
18、文件輸出流對(duì)象 FileOutputStream fos = new FileOutputStream(destFile); byte[] buf = new byte[1024]; //創(chuàng)建字節(jié)數(shù)組,作為臨時(shí)緩沖 System.out.println("開始復(fù)制文件..."); while (fis.read(buf) != -1) { //循環(huán)從文件輸入流中讀取數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論