《Java》Java“檔案操作”實際應用
阿新 • • 發佈:2018-11-12
一、任務目標
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();
}
}
}
執行結果: