實驗9 Java輸入輸出流.doc_第1頁
實驗9 Java輸入輸出流.doc_第2頁
實驗9 Java輸入輸出流.doc_第3頁
實驗9 Java輸入輸出流.doc_第4頁
實驗9 Java輸入輸出流.doc_第5頁
免費預(yù)覽已結(jié)束,剩余9頁可下載查看

下載本文檔

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

文檔簡介

山西大學(xué)計算機與信息技術(shù)學(xué)院實驗報告姓 名 顏凱麗 學(xué) 號2010242100專業(yè)班級軟件工程一班課程名稱 Java實驗實驗日期2012/12/28成 績指導(dǎo)教師 批改日期實驗名稱 實驗9 Java的輸入輸出流l 實驗?zāi)康?. 理解I/O流的概念,掌握其分類2. 掌握文本文件讀寫、二進制文件讀寫l 實驗內(nèi)容 1. 分別使用FileWriter 和 BufferedWriter 往文件中寫入1萬個隨機數(shù),比較用時的多少?(用時采用方法System.currentTimeMillis())求時間差;使用:FileWriter程序源代碼import java.io.FileWriter;import java.io.IOException;import java.util.Random;public class WriterSample public static void main(String args) throws IOException long start = System.currentTimeMillis();FileWriter f = new FileWriter(f.dat);Random random=new Random();for (int i = 0; i 10000; i+) f.write(int) random.nextDouble();long end = System.currentTimeMillis();f.close();System.out.println(end + ms - + start + ms = + (end - start)+ ms + );程序運行結(jié)果貼圖使用:BufferedWriter程序源代碼import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.util.Random;public class WriteSample2 public static void main(String args) throws IOException long start = System.currentTimeMillis();BufferedWriter f2 = new BufferedWriter(new FileWriter(f2.dat);Random random=new Random();for (int i = 0; i 10000; i+) f2.write(int) random.nextDouble();f2.flush();long end = System.currentTimeMillis();f2.close();System.out.println(end + ms - + start + ms = + (end - start)+ ms + );程序運行結(jié)果貼圖2. 課本P547,19.2 :編寫一個文件,如果文件Exercise 19_2.dat 不存在,就創(chuàng)建一個名為Exercise 19_2.txt的文件。向這個文件追加新數(shù)據(jù)。使用二進制I/O將100個隨機生成的整數(shù)寫入這個文件中。程序源代碼import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.util.Random;public class Append1 public static void main(String args) throws IOException File file = new File(Exercise19_2.dat);Random random = new Random(1000000000);if (!file.exists() file = new File(Exercise19_2.txt);PrintWriter f = new PrintWriter(new FileOutputStream(file, true);for (int i = 0; i 100; i+) f.printf(random.nextDouble() * 1000000000 + );f.close();程序運行結(jié)果貼圖文件:Exercise19_2.txt中生成的一百個隨機數(shù):3. 課本P547 19.3:(對二進制數(shù)據(jù)文件中的所有數(shù)據(jù)求和)假設(shè)已經(jīng)使用DataOutputStream中的writeInt(int)創(chuàng)建一個名為Exercise 19_3.dat的二進制數(shù)據(jù)文件,文件包含數(shù)目不確定的整數(shù),編寫一個程序來計算這些整數(shù)的總和。程序源代碼import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.EOFException;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Random;public class SumAppend public static void main(String args) throws IOException File file = new File(Exercise19_3.dat);DataOutputStream output = new DataOutputStream(new FileOutputStream(file);Random random = new Random();int num = random.nextInt(100);int sum = 0;System.out.println(共有 + num + 個數(shù));for (int i = 0; i num; i+) int r = random.nextInt(100);output.writeInt(r);sum += r;System.out.println(總和為: + sum + n數(shù)據(jù)如下:);output.close();DataInputStream input = new DataInputStream(new FileInputStream(file);try while (true) System.out.println(input.readInt(); catch (EOFException ex) System.out.println(All data are read.);程序運行結(jié)果貼圖4. 在文本文件bigbook.txt中包含有很長篇幅的英語短文,編寫程序要求統(tǒng)計文件的所有短文中包含英文字母“A”的個數(shù),并顯示統(tǒng)計的時間。程序源代碼import java.io.File;import java.io.FileNotFoundException;import java.util.Scanner;public class Statics public static void main(String args) throws FileNotFoundException long sum=0;long begin = System.currentTimeMillis();Scanner input = new Scanner (new File(A.txt);while(input.hasNext()String temp = new String(input.next();sum+=count(temp);long finish = System.currentTimeMillis();System.out.println(Letter A appears + sum + times in this artical.);System.out.println(this statistic uses + (finish-begin) + ms.);public static long count(String t)long re=0;for(int i=0;it.length();i+)if (t.charAt(i)=A)re+;return re;程序運行結(jié)果貼圖A.txt中的內(nèi)容貼圖:5.編寫一個Java應(yīng)用程序,給當(dāng)前的類所在的文件ReadExample.java添加行號拷貝到另一個文件temp.text。程序源代碼import java.io.File;import java.io.FileNotFoundException;import java.io.PrintWriter;import java.util.Scanner;public class Append3 public static void main(String args) throws FileNotFoundException File file = new File(D:eclipsejavasrcAppend3.java);File target = new File(temp.txt);Scanner input = new Scanner (file);PrintWriter output = new PrintWriter(target);int i=1;while(input.hasNextLine()output.write(i+ );output.write(input.nextLine();output.println();i+;output.close();input.close();程序運行結(jié)果貼圖Temp.txt中的內(nèi)容貼圖:P547 19.5(將對象和數(shù)組存儲在文件中)編寫一個程序,向一個名為Exercise19_5.dat的文件中存儲一個含5個int值1,2,3,4,5的數(shù)組,存儲一個表示當(dāng)前時間的Date對象,存儲一個double值5.5程序源代碼import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;public class Append4 public static void main(String args) throws IOException File file = new File (Exercise19_5.dat);int array = 1,2,3,4,5;ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(file);output.writeObject(array);output.writeObject(new java.util.Date();output.writeDouble(5.5);output.close();程序運行結(jié)果貼圖Exercise19_5.dat中的內(nèi)容貼圖:P548 19.12(組合文件)編寫一個工具程序,使它能夠用下面的命令,將文件組合在一起構(gòu)成一個新文件:java Exercise19_12 SourceFile1SourceFilen TargetFile這個命令將 SourceFile1,SourceFilen合并為TargetFile。程序源代碼import java.io.*;public class ComFile public static void main(String args) if(args.length!=3) System.out.println(ComFile c1 c2 com); System.exit(0); File f1 =new File(args0); File f2 =new File(args1); if(!f1.exists() System.out.println(c1+args0+不存在!); System.exit(0); if(!f2.exists() System.out.println(c2+args1+不存在!); System.exit(0); File f3 = new File(args2); try FileInputStream in1 =new FileInputStream(f1);FileInputStream in2 =new FileInputStream(f2);FileOutputStream out =new FileOutputStream(f3,true);int a;while(a=in1.read()!=-1)out.write(a);int b;while(b=in2.read()!=-1)out.write(b);in1.close();in2.close();out.close(); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();程序運行結(jié)果貼圖課后作業(yè)P544 19.1 19.1619.1答:文本文件將數(shù)據(jù)解釋成字符序列,需要自動進行編碼和解碼t。二進制文件中的數(shù)據(jù)是原始的二進制數(shù)值,由位序列構(gòu)成。文本編輯器可以查看文本文件,但是不能查看二進制文件。19.2在java中可以通過使用Java I/O類來創(chuàng)建對象,再使用對象中定義的方法來讀寫數(shù)據(jù)。數(shù)據(jù)流包含輸入流和輸出流,輸入流即從文件中讀取數(shù)據(jù)流,輸出流即將數(shù)據(jù)流寫入文件19.3文本文件是在寫入一個字符時,將統(tǒng)一碼轉(zhuǎn)化為文件指定的編碼,而在讀取字符時,將編碼轉(zhuǎn)化為統(tǒng)一碼的一種文件。它將數(shù)據(jù)解釋成字符序列,需要自動進行編碼和解碼,其文件的擴展名為.txt。二進制文件是在寫入一個數(shù)值時,將內(nèi)存中的確切值復(fù)制到文件中,實際也顯示的也是這個值,而在讀取一個字節(jié)時,就會輸入流中讀取一個字節(jié)的數(shù)值。它將數(shù)據(jù)原始的二進制數(shù)值,由位序列構(gòu)成,java虛擬機可以閱讀此類文件,文件擴展名為.dat。19.4字符在內(nèi)存中表示為統(tǒng)一碼的形式,在文本文件中表示為文件指定的編碼格式,即字符序列。19.50x0041 0x0042 0x004319.6ASCII碼文本文件中寫入字符串100,它在文件中存儲的值為0x31 0x30 0x30使用二進制I/O中寫入字節(jié)型100,它在文件中存儲的值0x6419.7在java中使用統(tǒng)一碼,而在Windows文本文件中默認使用ASCII碼19.8在java I/O類中,幾乎所有的方法和構(gòu)造方法都會拋出異常,因為經(jīng)常有不期望的錯誤發(fā)生.19.9不關(guān)閉數(shù)據(jù)流可能會輸出文件中造成數(shù)據(jù)受損,或?qū)е缕渌某绦蛟O(shè)計錯誤,數(shù)據(jù)無法正常存儲.關(guān)閉數(shù)據(jù)流確保數(shù)據(jù)正常寫入文件,同時也釋放數(shù)據(jù)流所占用的資源.19.10Read()方法從輸入流讀取數(shù)據(jù)的下一個字節(jié),返回的字節(jié)的值是一個在0到255之間的整數(shù)值,如果因為到達這個流的末尾而無字節(jié)可用,則返回值是-1.它返回的是讀取的字節(jié)數(shù)。 InputStream中的抽象方法有read(),available(),close(),skip(),mark(),Reset() OutputStream中的抽象方法有write(),close(),flush()。InputStream()中的抽象方法是read(),OutputSt

溫馨提示

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

評論

0/150

提交評論