★ . 在File 類裏面提供了以下的構造方法,可以設置路徑:
· 設置一個完整路徑:WEB 開發之中比較常見public File(String pathname)
· 設置父路徑以及操作的文件名稱:在Android 開發裏面比較常見;
public File(File parent, String child)
· 創建一個新的文件:
public boolean createNewFile() throws IOException
· 刪除文件:
public boolean delete()
· 判斷文件是否存在:
public boolean exists()
文件夾也同樣可以。
eg : 一個簡單的文件操作示例
package example;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDemo {
public static void main(String[] args) throws Exception {
fun1();
}
/**
* 創建文件和刪除文件
* @throws Exception
*/
public static void fun1() throws Exception {
File file = new File("e:\\test.txt");
if (!file.exists()) {
System.out.println(file.createNewFile());
} else {
file.delete();
}
}
}
第一個問題:發現操作中出現了延遲,因爲JAVA 的文件操作要通過JVM 間接進行,所以如果文件操作的過快有可能會出現延遲;第二個問題:關於操作系統的路徑分隔符問題。在windows 之中使用的路徑分割符:\,而在linux下正好相反:/,在正常情況下,Java 程序都會在windows 下開發,而真正部署的時候會將其部署到linux或其他的操作系統上,所以如果現在將路徑的分割符寫固定了,那麼在項目發佈時就有可能出現錯誤。
爲了解決這樣的問題,在Java 裏面提供了一個路徑分割符的概念:
public static final String separator
正常來講final修飾的屬性應該是大寫字母,但是這些是Java 最早開發時所帶來的遺留問題。
★ . 以上的代碼是直接在根路徑下創建的文件,那麼如果說現在創建的文件有目錄呢?
如果要創建目錄可以使用如下的方法:
public boolean mkdirs()
有些時候有可能目錄還存在着呢,那麼在進行目錄的創建之前,至少需要做一個判斷,判斷目錄是否存在,使用如下方法:
public File getParentFile()
表示取得當前文件或文件夾的父目錄。
eg :
/**
* 創建和刪除帶有父路徑的文件
* @throws Exception
*/
public static void fun2() throws Exception {
File file = new File("e:" + File.separator + "demo" + File.separator
+ "example" + File.separator + "test.txt");
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
System.out.println(file.createNewFile());
} else {
file.delete();
}
}
★ . 那麼除了進行文件或文件夾的創建之外,也可以利用 File 類取得文件夾之中的內容。
取得文件夾的內容
· 判斷路徑是否是文件夾:
public boolean isDirectory()
· 列出目錄中的全部內容
public File[] listFiles()
eg :
/**
* 列出文件夾下的所有子文件夾或文件
* @throws Exception
*/
public static void fun3() throws Exception {
File file = new File("d:"+File.separator+"Program Files");
if(file.exists() && file.isDirectory()) {
File files[] = file.listFiles();
for(File f : files){
System.out.println(f);
}
}
}
★ . 除了以上的基本操作之外,在File 類裏面也定義了一些與文件本身信息有關的操作方法:
· 取得文件大小:
public long length()
· 取得文件的最後一次修改日期:
public long lastModified()
eg :
/**
* 獲取文件的大小和最後修改時間
* @throws Exception
*/
public static void fun4() throws Exception {
File file = new File("d:" + File.separator + "cat.jpg" );
//獲取文件大小
long size = file.length() / (long)1024;
System.out.println(size + "KB");
//獲取最後修改時間
long time = file.lastModified();
SimpleDateFormat slf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String t = slf.format(new Date(time));
System.out.println(t);
}