1. 程式人生 > >Java學習---流與檔案

Java學習---流與檔案

實驗10  流與檔案操作

一、實驗目的

理解和掌握JAVA程式中實現輸入/輸出的技術和有關的類與方法。

二、實驗要求

  1. 掌握File類常用的方法
  2. 掌握標準資料流及Scanner類的應用。
  3. 掌握檔案輸入輸出流使用
  4. 掌握資料輸入輸出流使用
  5. 瞭解物件流的使用。

三、實驗內容

(一) 使用File類,測試檔案與資料夾屬性

1.測試理解File

package FileTest1;

import java.io.*;

public class TestFile1 {

    public static void main(String args[]) {

       // 磁碟上已有檔案的測試(查磁碟上的檔案與資料夾,替換下列資料夾與檔名)

       File f1 = new File("C:\\WINDOWS", "win.ini");

       System.out.println("檔案win.ini存在嗎:" + f1.exists());

       System.out.println("檔案win.ini是可讀的嗎:" + f1.canRead());

       System.out.println("檔案win.ini是可寫的嗎:" + f1.canWrite());

       System.out.println("檔案win.ini是隱藏的檔案嗎:" + f1.isHidden());

       System.out.println("檔案win.ini的絕對路徑:" + f1.getAbsolutePath());

       System.out

.println("檔案win.ini的路徑:" + f1.getPath());

       System.out.println("檔案win.ini的檔名:" + f1.getName());

       System.out.println("檔案win.ini的長度:" + f1.length());

       System.out.println("檔案win.ini的最後修改時間(長整形):" + f1.lastModified());

 

       File f2 = new File("C:\\WINDOWS");

       System.out.println("目錄C:\\WINDOWS:存在嗎:" + f2.exists());

       System.out.println("C:\\WINDOWS:是目錄嗎?" + f2.isDirectory());

       System.out.println("C:\\WINDOWS:是檔案嗎?" + f2.isFile());

       System.out

               .println("----------------------------------------------------------------------");

       File fileName[] = f2.listFiles();

       for (int i = 0; i < fileName.length; i++) {

            if (fileName[i].isFile())

              System.out.println("文  件  名  稱:" + fileName[i].getName());

           else

              System.out.println("資料夾名稱:" + fileName[i].getName());

       }

       System.out

               .println("----------------------------------------------------------------------");

       String fileNameStr[] = f2.list();

       for (int i = 0; i < fileName.length; i++) {

           System.out.println("檔案(夾)名稱:" + fileNameStr[i]);

       }

       System.out

               .println("----------------------------------------------------------------------");

 

       // 磁碟上沒有的資料夾的測試

       File f3 = new File("E:\\8000");

       System.out.println("目錄E:\\8000存在嗎:" + f3.exists());

       f3.mkdir();

       System.out.println("目錄E:\\8000存在嗎:" + f3.exists());

       f3.delete();

       System.out.println("目錄E:\\8000存在嗎:" + f3.exists());

 

       // 磁碟上沒有的檔案的測試

       File f4 = new File("E:\\9000");

       if (!f4.exists())

           f4.mkdir();

       File f5 = new File(f4, "abc.txt");

       System.out.println("檔案abc.txt存在嗎?:" + f5.exists());

       try {

           if (!f5.exists())

              f5.createNewFile();

           System.out.println("檔案abc.txt存在嗎?:" + f5.exists());

       } catch (IOException e) {

           System.out.println("異常" + e);

       }

    }

}

2.測試可執行檔案

package FileTest1;

import java.io.*;

public class TestFile2 {

    public static void main(String args[]) {

       try {

           Runtime ce = Runtime.getRuntime();

           File file = new File("c:/windows", "Notepad.exe");

           ce.exec(file.getAbsolutePath());

       } catch (Exception e) {

           System.out.println(e);

       }

    }

}

(二) 程式設計
  1. 程式設計:使用Scanner類從鍵盤輸入10個int型別的數,求累加和和平均值。
  2. import java.util.Scanner;
    
    public class 二1 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println("請輸入10個數");
            Scanner in = new Scanner(System.in);
            int sum=0;
            for(int i=1;i<=10;i++)
            {
                sum+=in.nextInt();
            }
            System.out.println("和為:"+ sum+"\n平均數為:"+sum*1.0/10);
            
        }
    
    }
  3. 將儲存在本地機當前資料夾中的文字檔案的內容在螢幕上顯示出來,然後將其另存為 另一個檔案。
import java.io.*;

public class 二2 {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        FileInputStream rf = new FileInputStream("C:\\WINDOWS\\win.ini");
        FileOutputStream wf = new FileOutputStream("C:\\CYS\\cys.txt");
        int n=1000;
        byte buffer[] = new byte[n];
        while((rf.read(buffer,0,n)!=-1)&&(n>0))
        {
            System.out.println(new String(buffer));
            wf.write(buffer,0,buffer.length);
        }
        System.out.println();
        rf.close();
        wf.close();
        
    }

}