Java基礎 實驗七 檔案操作
阿新 • • 發佈:2019-01-13
一、實驗內容
1)程式設計:求2~200之間的所有素數,將求得的結果儲存到PRIME.DAT檔案中。
2)程式設計:檢查C盤根目錄下CONFIG..SYS檔案是否存在,若在則顯示該檔案的名稱和內容。
3)程式設計:輸入5個學生的資訊(包含學號、姓名、3科成績),統計各學生的總分,然後將學生資訊和統計結果存入二進位制資料檔案STUDENT.DAT中。
4)程式設計:從第(3)題中建立的STUDENT.DAT檔案中讀取資料,尋找平均分最高的學生,並輸出該學生的所有資訊。
二、實驗程式碼
package exceptionseven; import java.io.*; public class ExceptionSeven { /** * 問題一 * 求2~200之間的所有素數,將求得的結果儲存到PRIME.DAT檔案中 */ public void One() throws FileNotFoundException, IOException { FileOutputStream fos = new FileOutputStream("D:\\PRIME.DAT"); int temp = 2; fos.write(String.valueOf(temp).getBytes()); fos.write(" ".getBytes()); temp = 3; fos.write(String.valueOf(temp).getBytes()); fos.write(" ".getBytes()); for(int i = 3; i <= 100; i++) { for(int j = 2; j <= i/2; j++) { if(i%j == 0) { break; } if(j == i/2) { //System.out.println("100以內素數:" + i); fos.write(String.valueOf(i).getBytes()); fos.write(" ".getBytes()); } } } fos.close(); } /** * 問題二 * 檢查C盤根目錄下CONFIG..SYS檔案是否存在, * 若在則顯示該檔案的名稱和內容。 */ public void Two() throws FileNotFoundException, IOException { String filePath1 = "C:\\CONFIG.SYS" ; String filePath2 = "D:\\users.txt"; String filePath3 = "D:\\PRIME.DAT"; File fi = new File(filePath3); if(fi.exists()) { System.out.println("檔名稱為:" + fi.getName()); FileInputStream fis = new FileInputStream(fi); byte[] data = new byte[(int)fi.length()]; fis.read(data); fis.close(); String msg = new String(new String(data)); System.out.println("檔案內容為:"); System.out.println(msg); } else { System.out.println("檔案不存在"); } } public void ThreeAndFour() throws FileNotFoundException, IOException { //五名學生的資訊: int i, j; int sum = 0; String[] Sno = {"123", "456", "789", "147", "258"}; String[] Name = {"zhangSan", "liSi", "wangWu", "lixiao", "niNing"}; double[][] Score = {{56, 58, 99}, {45, 88, 65}, {12, 74, 54}, {12, 56, 54}, {85, 74, 54}}; double[] sumScore = new double[5]; for (i = 0; i < 5; i++) { for(j = 0; j < 3; j++) { sum += Score[i][j]; } sumScore[i] = sum; sum = 0; } //五名學生的學號、姓名、總成績存入檔案中 String filePath = "D:\\STUDENT.DAT" ; File file = new File(filePath); OutputStream fos = new FileOutputStream(file); DataOutputStream dos = new DataOutputStream(fos); for(i = 0; i < 5; i++) { dos.writeUTF(Sno[i]); dos.writeUTF(Name[i]); dos.writeDouble(sumScore[i]); } dos.close(); //讀取資料 String[] newSno = new String[5]; String[] newName = new String[5]; double[] newSum = new double[5]; InputStream fis = new FileInputStream(file); DataInputStream dis = new DataInputStream(fis); for(i = 0; i < 5; i++) { newSno[i] = dis.readUTF(); newName[i] = dis.readUTF(); newSum[i] = dis.readDouble(); System.out.print(newSno[i] + " " + newName[i] + " "); System.out.printf("%.1f\n",newSum[i]/3.0); } dis.close(); } public static void main(String[] args) throws IOException { ExceptionSeven exec = new ExceptionSeven(); exec.One(); exec.Two(); exec.ThreeAndFour(); } }