java IO程式設計(一)檔案操作類:File
阿新 • • 發佈:2018-12-21
學習過程中某個知識點長時間不用老是忘記,在此記錄,下次忘記容易複習。
在java.io包中,如果要進行檔案自身的操作(例如:建立、刪除等),只能依靠java.io.File類完成。File類中的常用方法在下表中列出
No. | 方法 | 型別 | 描述 |
1 | public File(String pathname) | 構造 | c傳遞完整檔案操作路徑 |
2 | public File(File parent,String child) | 構造 | s設定父路徑與子檔案路徑 |
3 | public boolean createNewFile() throws IOException | 普通 | c建立新檔案 |
4 | public boolean exists() | 普通 | 判斷給定路徑是否存在 |
5 | public boolean delete() | 普通 | 刪除指定路徑的檔案 |
6 | public File getParentFile() | 普通 | 取得當前路徑的父路徑 |
7 | public boolean mkdirs() | 普通 | 建立多級目錄 |
8 | public long length() | 普通 | 取得檔案大小,以位元組為單位返回 |
9 | public boolean isFile() | 普通 | 判斷給定路徑是否是檔案 |
10 | public boolean isDirectory() | 普通 | 判斷給定路徑是否是目錄 |
11 | public long lastModified() | 普通 | 取得檔案的最後一次修改日期時間 |
12 | public String[] list() | 普通 | 列出指定目錄中的全部內容 |
13 | public File[] listFiles() | 普通 | 列出所有的路徑以File類物件包裝 |
注:File類中提供的方法並不涉及檔案的具體內容,只是針對檔案本身的操作。
下面通過幾個小例子練習File類中方法的使用
1.給定一個檔案的完整路徑,判斷檔案是否存在,如果存在則將該檔案刪除並提示檔案已刪除,否則建立指定檔案
package com.tjut.IOTest;
import java.io.File;
import java.io.IOException;
/**
* Windows中檔案分隔符為\
* Linux中檔案分隔符為/
* java為了實現跨平臺特性使用常量File.separator來表示分隔符
* 之所以separator常量沒有大寫,是因為JDK 1.0中常量與變數的定義規則相同
* @author 竹軒聽雨
*
*/
public class IOTest01 {
public static void main(String[] args) throws IOException {
/**
* 例項化File物件
* 如果檔案存在則將其刪除,不存在則創造檔案
*/
File file = new File("d:" + File.separator + "test.txt");
//此句在Windows中可替換為File file = new File("d:\\test.txt");
if(file.exists()) {//如果檔案已存在
file.delete();//刪除指定檔案
System.out.println("檔案已刪除");//提示
} else {//否則
System.out.println(file.createNewFile());//建立指定檔案
}
}
}
2.建立帶路徑的檔案。如果給定的檔案路徑為根路徑則直接利用createNewFile()方法進行建立;如果要建立的檔案存在目錄,那麼無法將其建立,應先建立父路徑再建立檔案
package com.tjut.IOTest;
import java.io.File;
import java.io.IOException;
public class IOTest02 {
/**
* 如果檔案路徑不存在則建立路徑
* 否則建立指定路徑下的指定檔案
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File file = new File("d:" + File.separator + "Demo" + File.separator + "Hello" + File.separator + "test.txt");
if(!file.getParentFile().exists()) {//如果父路徑不存在
file.getParentFile().mkdirs();//建立父路徑
}
System.out.println(file.createNewFile());//建立檔案
}
}
3.判斷指定路徑的檔案是否存在,如果存在則判斷其是否是檔案,是否是目錄,並輸出其檔案大小及上次修改時間。
package com.tjut.IOTest;
import java.io.File;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
public class IOTest03 {
/**
* 判斷指定檔案是否存在
* 如果存在則列出一系列檔案資訊
* @param args
*/
public static void main(String[] args) {
File file = new File("d:" + File.separator + "1.jpg");
if(file.exists()) {
System.out.println("是否是檔案:" + file.isFile());
System.out.println("是否是目錄:" + file.isDirectory());
System.out.println("檔案大小:" + (new BigDecimal((double)file.length() / 1024 / 1024).divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP) + "M"));
System.out.println("上次修改時間:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
}
}
}
4.列出C盤跟目錄下的所有目錄
package com.tjut.IOTest;
import java.io.File;
public class IOTest04 {
/**
* 列出C盤根目錄下的所有目錄
* @param args
*/
public static void main(String[] args) {
File file = new File("c:" + File.separator);
if(file.isDirectory()) {
File results[] = file.listFiles();
for(int i = 0;i < results.length;i++) {
System.out.println(results[i]);
}
}
}
}
5.列出C盤根目錄下的所有目錄,包括目錄中的目錄,使用遞迴完成
package com.tjut.IOTest;
import java.io.File;
public class IOTest05 {
/**
* 列出C盤中的所有目錄
* 包括目錄中的目錄
* 採用遞迴完成
* @param args
*/
public static void main(String[] args) {
File file = new File("c:" + File.separator);
print(file);
}
public static void print(File file) {
if(file.isDirectory()) {
File results[] = file.listFiles();
if(results != null) {
for(int i = 0;i < results.length;i++) {
print(results[i]);
}
}
}
System.out.println(file);
}
}