Java File 常用 Api
● File 是做檔案的基礎處理,可以創建、刪除檔案 & 拿取檔案資料夾的資訊,但不能讀取檔案內容,詳細的 API 可以參考 極客書 File,或 Java SE 官方網站
File 常用函數 | 介紹 |
---|---|
exists() : boolean | 資料夾 or 檔案是否存在 |
createNewFile() : boolean | 創建 檔案 |
mkdir() : boolean | 創建 資料夾 |
list() : String[] | 若是已存在的資料夾,則會列出資料夾內的檔案 (資料夾) 名 (不會遞迴搜尋),如果是檔案使用,則會返回 Null |
getName() : String | 取得資料名稱 |
length() : long | 資料大小,要用 M 為單位則除 (1024 * 1024) |
isHidden() : boolean | 資料夾是否隱藏 |
lastModified() | 最後更改的時間,這個時間是 Unit Time |
File 基礎屬性判斷
● 基礎的有 getName
、getPath
、isHidden
、length
(大小以 byte 為單位)、lastModified ... 等等的訊息
private static void printFile() {
File disk = new File("D:\\");
// 找出 D 槽中所有的資料夾
detailFileInfo(disk.listFiles());
}
private static void detailFileInfo(File[] files) {
if(files == null) {
return;
}
for(File f : files) {
if(f.isHidden()) {
continue;
}
System.out.println("File name: " + f.getName() + "\n" +
"Path: " + f.getPath() + "\n" +
"Length: " + f.length() + "\n" +
"Modified: " + f.lastModified() + "\n" // Unit Time
);
}
}
File 創建資料夾
● 使用 mkdir
就可以創建資料夾,若是沒有使用 exists()
檢查,創建資料夾則會失敗 (回傳 false)
private static void createDir(File... files) {
for(File f : files) {
if(f.exists()) {
String[] fileNames = f.list();
// 資料夾內的所有內容
if(fileNames == null) {
return;
}
for (String s : fileNames) {
System.out.println(s);
}
} else {
boolean newFile = f.mkdir();
System.out.println("Create dir: " + newFile);
}
}
}
File 創建檔案
● 使用 File 的函數 createNewFile
就可以創建檔案,若是沒有使用 exists()
檢查,創建檔案則會失敗 (回傳 false)
private static void createFile(File... files) throws IOException {
for(File f : files) {
if(f.exists()) {
// 純檔案不需要使用 list() 方法, 如果使用則會返回 null
System.out.println("已存在的檔案, 檔案名: " + f.getName());
} else {
boolean newFile = f.createNewFile();
System.out.println("Create File: " + newFile);
}
}
}
File usage Simple Demo
● 以下會用 Java File API 創建一個資料夾,並在內部創建一個 myFile.txt
檔案,來演示 Java File API 的基礎簡單使用範例
public class FiledDemo {
public static void main(String[] str) {
printFile();
try {
makeFile();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void printFile() {
File disk = new File("D:\\");
// 找出 D 槽中所有的資料夾
detailFileInfo(disk.listFiles());
}
private static void detailFileInfo(File[] files) {
if(files == null) {
return;
}
for(File f : files) {
if(f.isHidden()) {
continue;
}
System.out.println("File name: " + f.getName() + "\n" +
"Path: " + f.getPath() + "\n" +
"Length: " + f.length() + "\n" +
"Modified: " + f.lastModified() + "\n" // Unit Time
);
}
}
private static void makeFile() throws IOException {
File dir = new File("D:\\JavaIO");
File file = new File("D:\\JavaIO\\myFile.txt");
createDir(dir);
createFile(file);
File[] files = dir.listFiles();
if(files == null) {
return;
}
// 格式轉換
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
for(File childFile : files) {
String name = childFile.getName();
// 轉換 Unit Time
long mills = childFile.lastModified();
String dateTimeStr =sdf.format(new Date(mills));
System.out.println("File name: " + name + ", Date time: " + dateTimeStr);
}
}
private static void createDir(File... files) {
for(File f : files) {
if(f.exists()) {
String[] fileNames = f.list();
if(fileNames == null) {
return;
}
for (String s : fileNames) {
System.out.println("已存在的資料夾, 內部檔案名: " + s);
}
} else {
boolean newFile = f.mkdir();
System.out.println("Create dir: " + newFile);
}
}
}
private static void createFile(File... files) throws IOException {
for(File f : files) {
if(f.exists()) {
System.out.println("已存在的檔案, 檔案名: " + f.getName());
} else {
boolean newFile = f.createNewFile();
System.out.println("Create File: " + newFile);
}
}
}
}
目前的檔案資料層級 (cmd: tree -f)
--結果--
更多的 Java 語言相關文章
Java 語言深入
● 在這個系列中,我們全方位地探討了 Java 語言的各個核心主題,旨在幫助你徹底掌握這門強大的編程語言。無論你是想深入理解 Java 的基礎類型與變數作用域,還是探索異常處理與運算子的細節,這些文章都將為您提供寶貴的知識
此外,我們還涵蓋了物件創建、函數式編程、註解應用以及泛型的深入分析,幫助您提升在實際開發中的技能和效率
點擊以下連結,開始你的學習之旅~
● 深入探索 Java 基礎類型、編碼、浮點數、參考類型和變數作用域 | 探討細節
● 深入了解 Java 應用與編譯:從原始檔到命令產出 JavaDoc 文件 | JDK 結構
● 深入理解 Java 運算子與修飾符 | 重要概念、細節 | equals 比較
● 深入探索 Java 物件創建與引用細節:Clone 和finalize 特性,以及強、軟、弱、虛引用
● 認識 Java 函數式編程:從 Lambda 表達式到方法引用 | 3 種方法引用
Java IO 相關文章
● 探索 Java IO 的奧秘,了解檔案操作、流處理、NIO等精彩內容!
深入 Java 多執行緒
● 這一系列文章將帶你深入了解 Java 多執行緒技術的各個方面,從基礎知識到進階應用,涵蓋了多執行緒編程的核心概念與實踐
深入 Java 物件導向
● 探索 Java 物件導向的奧妙,掌握介面、抽象類、繼承等重要概念!幫助你針對物件導向設計有更深入的了解!