1. 程式人生 > >《Java》Java“檔案操作”實際應用

《Java》Java“檔案操作”實際應用

一、任務目標

1.完成一個java application應用程式,判別指定路徑下指定檔名的檔案是否存在。如果指定檔案存在,讀取並分別顯示其修改時間和檔案大小等屬性。
2.以文字方式開啟某一指定路徑指定檔名的文字檔案,讀取其內容並顯示。
3.以文字方式向某一指定路徑指定檔名的文字檔案寫入指定文字內容,例如:寫入自己的姓名和學號。

二、“File類”概述

    File類是java.io包中唯一代表磁碟檔案本身的物件。File類定義了一些與平臺無光的方法來操作檔案,可以通過呼叫File類中的方法,實現建立、刪除、重新命名檔案等操作。File類的物件主要用來獲取檔案本身的一些資訊,如檔案所在目錄、檔案的長度、檔案讀寫許可權等。

1.建立檔案物件

File(String pathname)
其中,pathname值路徑名稱(包含檔名)。例如:

File file = new File("D:/1.txt")

file就是一個檔案物件。

2.File類的常用方法
方法 返回值 說明
getName() String 獲取檔案的名稱
cnaRead() boolean 判斷檔案是否為可讀的
canWrite() boolean 判斷檔案是否可被寫入
exits() boolean 判斷檔案是否存在、
length() long 獲取檔案的長度(以位元組為單位)
getAbsolutePath() String 獲取檔案的絕對的路徑
getParent() String 獲取檔案的父路徑
isFile() boolean 判斷檔案是否存在
isDirectory() boolean 判斷檔案是否為一個目錄
isHidden() boolean 判斷檔案是否為隱藏檔案
lastModified() long 獲取檔案最後修改時間
3.FileReader和FileWriter類

    FileReader流順序地讀取檔案,只要不關閉流,每次呼叫read()方法就順序地讀取源中其餘的內容,直到源的末尾或流被關閉。FileWriter流利用同樣的原理,通過write()方法將資訊寫入目標檔案中。

三、“檔案操作”實際應用

任務1:

文字檔案(F:/TCC/word.txt):
在這裡插入圖片描述
程式程式碼:

import java.io.File;   //匯入File方法
import java.util.Date;;  //匯入Date方法

public class FileNature {   //建立類FileNature

	public static void main(String[] args) { //主程式入口
		
		File file = new File("F:/TCC/word.txt");//建立檔案物件file
		//isFile()方法判斷檔案是否存在,返回boolean型別
		if(file.isFile()){ 
			//lastModified()方法獲取檔案最後的修改時間,返回時間戳,需要用Date()方法對時間戳進行轉換
			Date time = new Date(file.lastModified()); 
			//length()方法獲取檔案的長度(以位元組為單位)
			long length = file.length(); 
			System.out.println("檔案修改時間:"+time);
			System.out.println("檔案長度:"+length+" "+"byte");
		}
		else{
			System.out.println("word.txt檔案不存在");
		}
	}
}

注:lastModified()方法獲取檔案最後的修改時間,返回時間戳,需要用Date()方法對時間戳進行轉換

執行結果:
在這裡插入圖片描述


任務2:

程式程式碼:

import java.io.*; //匯入IO流

public class FileRead {  //建立類FileRead
	
	public static void main(String[] args) {
		
		File file = new File("F:/TCC/word.txt");//建立檔案物件file
		try{  //捕捉異常
			FileReader in = new FileReader(file);  //建立FileReader物件in
			char byt[] = new char[1024];  //定義字元型變數陣列byt
			int len = in.read(byt);  //使用read()方法將word.txt的內容讀入陣列byt中
			System.out.println("檔案中的內容為:"+"\n"+new String(byt,0,len));//輸出所去讀取到的內容
			in.close();//關閉流
		}catch(Exception e1){
			e1.printStackTrace();
		}
	}
}

執行結果:
在這裡插入圖片描述
注:在執行結果中我們會看到“富強”前面多出了一個“?”,這是由於在檔案開頭有BOM編碼的識別,所以在選擇編碼方式時應該選擇UTF-8-無BOM編碼


任務3:

文字檔案(F:/TCC/text.txt):
在這裡插入圖片描述

程式程式碼:

import java.io.File;
import java.io.*;

public class FileWrite {

	public static void main(String[] args) {
		
		File file = new File("F:/TCC/text.txt");//建立檔案物件file
		try{  //捕捉異常
			FileWriter out = new FileWriter(file); //建立FileWriter物件out
			String c = "學號:201822|姓名:小明";  //定義字串常量c
			out.write(c); //使用write()方法將c的內容寫入目標檔案text.txt中
			System.out.println("寫入成功!");
			out.close(); //關閉流
		}catch(Exception e1){
			e1.printStackTrace();
		}
	}
}

執行結果:
在這裡插入圖片描述