### File類的說明
File類是java.io包中對應著硬盤中的一個文件或網絡中的一個資源,可以表示一個文件(.doc .xls .mp3 .avi .jpg .dat等類型),也可以表示一個文件目錄。
File類的對象是與平臺無關的,File類針對文件或文件目錄,只能進行新建,刪除,重命名,上層目錄等操作,如果涉及到訪問文件的內容,File是無能為力,只能使用IO流來實現。我們常把File類的對象做為形參傳遞給相應的IO流的構造方法中。
### 關鍵方法
構造方法:
~~~
File(String path)
使用文件路徑名path創建一個File對象
File(URI uri)
使用一個文件的uri創建一個File對象
File(File dir, String name)
使用一父文件dir和文件名name創建一個File對象
File(String dirPath, String name)
使用父文件名dirPath和文件名name創建一個File對象
~~~
常用方法
| 方法名 | 說明 |
|-----|-----|
| getName() | 獲取文件名 |
| getAbsolutePath() | 獲取文件絕對路徑 |
| getParent() | 獲取文件的父路徑名 |
| lastModified() | 獲取最后修改時間 |
| length() | 獲取文件大小 |
| canRead() | 獲取文件是否可讀 |
| canWrite() | 獲取文件是否可寫 |
| mkdir() | 創建文件夾 |
| exists() | 文件是否存在 |
| createNewFile() | 創建一個新文件 |
關鍵變量:
separator 文件路徑的分割符(“\”),這個變量可以更好的支持跨平臺的文件名表示
### File的Demo代碼
這個Demo有三個方法:
BaseInfo()—–顯示文件的基本信息,如名字,大小,路徑,修改時間等等。
showFiles(File file)—–顯示文件目錄下的文件名(不包括子目錄下的文件)
showAllFiles(File file)—–顯示文件目錄下的文件名(包括子目錄下的文件)
~~~
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class FileDemo {
//文件的基本信息
public static void BaseInfo(){
System.out.println("BaseInfo()");
File file = new File("test.txt");
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("file.getName(): "+file.getName());
//C:\Documents and Settings\All Users\workspace\IODemo\test.txt
System.out.println("file.getAbsolutePath(): "+file.getAbsolutePath());
System.out.println("file.getParent(): "+file.getParent());
System.out.println("new Date(file.lastModified()): "+ new Date(file.lastModified()));
System.out.println("file.length(): "+ file.length());
System.out.println("file.canRead(): "+ file.canRead());
System.out.println("file.canWrite(): "+ file.canWrite());
System.out.println("file.pathSeparator "+file.pathSeparator);//;
System.out.println("file.separator "+file.separator);//file.separator---路徑分割符(\)
File file2 = new File("Demo1");
file2.mkdir();
}
//顯示文件目錄下的文件名(不包括子目錄下的文件)
public static void showFiles(File file){
System.out.println("\nshowFiles: "+file.getName());
String[] strs = file.list();
for (int i = 0; i < strs.length; i++) {
System.out.println("文件"+i+"的名稱:"+strs[i]);
}
}
//顯示文件目錄下的文件名(包括子目錄下的文件)
public static void showAllFiles(File file){
System.out.print(file.getName()+"/");
File[] f1 = file.listFiles();
if(f1 != null && f1.length > 0){
for (int i = 0; i < f1.length; i++) {
//System.out.println("文件"+i+"名字: "+f1[i].getName());
if(f1[i] != null){
if(f1[i].isDirectory()){
if(f1[i] != null){
System.out.print("/");
showAllFiles(f1[i]);
}
}else{
if(i == 0){
System.out.println(" ");
}
System.out.println("文件"+i+"名字: "+f1[i].getName());
}
}
}
}
}
}
~~~
調用:
~~~
//1.File的一個基本信息
FileDemo.BaseInfo();
//2.顯示文件目錄下的文件名(不包括子目錄下的文件)
File f1 = new File("C:\\Documents and Settings");
FileDemo.showFiles(f1);
//3.顯示文件目錄下的文件名(包括子目錄下的文件)
FileDemo.showAllFiles(f1);
~~~
輸出信息:
~~~
BaseInfo()
file.getName(): test.txt
file.getAbsolutePath(): C:\Documents and Settings\All Users\workspace\IODemo\test.txt
file.getParent(): null
new Date(file.lastModified()): Thu Oct 15 20:05:48 CST 2015
file.length(): 0
file.canRead(): true
file.canWrite(): true
file.pathSeparator ;
file.separator \
showFiles: Documents and Settings
文件0的名稱:All Users
文件1的名稱:Default User
文件2的名稱:LocalService
文件3的名稱:NetworkService
文件4的名稱:user.com
.................
~~~
參考資料:
1.File api文檔
[http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4](http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4)
2.java io視頻
[http://edu.csdn.net/course/detail/805/10961?auto_start=1](http://edu.csdn.net/course/detail/805/10961?auto_start=1)
- 前言
- Java核心技術之Comparator和Comparable在排序中的應用
- Java核心技術之容器
- Java核心技術之基本數據類型
- java核心技術之正則表達式
- java核心技術之reflect(一):一個系統學習reflect的Demo(精)
- java核心技術之IO流(一)File類
- java核心技術之IO流(二)FileInputStream和FileOutputStream
- java核心技術之IO流(三)FileReader和FileWriter
- java核心技術之IO流(四)BufferedInputStream和BufferedOutputStream
- java核心技術之IO流(五)BufferedReader和BufferedWriter
- java核心技術之IO流(六)DataInputStream和DataOutputStream