從今天開始,我要將自己所學所想,參考API,將以講義的形式,列出自己覺得重要的東西,加深印象!
-------------------------------------------------這是廢話與正文的分割線----------------------------------------------------------------------------------------------------
File類,在java.io包中,在java語言中,它既可以表示文件,又可以表示目錄。(正文中我直接稱爲文件,按照理解的來就好)
它主要的構造方法有:
1.new File(File parent,String child); //根據parent目錄的全路徑名(即parent.getAbsoultPath()),和child的文件名組成一個新的file
2.new File(String parent,String child);//和1的構造方法很類似 parent就是child文件的上一級目錄·
3.new File(String pathName);//根據pathName(全路徑名或相對路徑名),去構造出新的file
4.new File(URI uri);//URI轉爲抽象的路徑名,構建出一個新的file對象
這裏我只總結常用的方法:
1.mkdir();//創建單級目錄,如果是多級目錄,則創建不成功,如:pathName = "D:/a/d"; 在D盤中沒有a,b目錄,這個就會創建失敗,這就需要用到mkdirs();
需要補充一點的就是,有沒有發現我的pathName中路徑用的是正斜槓,而我們所看到的路徑都是反斜槓的,原因是在java中'\'是轉義字符,有特殊的功能
爲了避免衝突,也可以寫成pathName = "D:\\a\\d"; 因爲"\\" 在java中輸出的是'\';
2.mkdirs();可創建多級目錄(包括單級),所以推舉按使用。
3.isFile()與isDirectory()用來判斷是否是文件|是否是文件夾,返回值爲boolean值,在系統中,如果不是文件就是文件夾,所以這兩個方法用一個接好了
4.getpath()文件的相對路徑,相對顧名思義,它相對的是project項目程序來說的,如果在工程目錄下,則輸出文件名既可以了,如果在項目文件夾外,則輸出的就是全路徑,
和getAbsoultPath()一致了。
5.getAbsoultPath()文件的絕對路徑,即文件的全路徑
6.length()文件長度,即文件大小(字節)
7.getTotalSpace();獲得分區的總大小,如這文件在D盤,則該函數返回的就是D盤的總大小
8.getUsableSpace;獲得分區可用空間大小
9.list()返回String[]數組,該路徑下所有文件與目錄名。
10.listFiles():返回File[]數組,該路徑下所有目錄和文件的對象
11.listRoots();返回分區File[]對象,如你電腦裏C:;D:;E:
File類主要理解記住這些方法基本上就可以了,如果有不懂可以再查看API就ok了!我們下面來用File類裏面的方法去遍歷某目錄中的文件,
思路:
1.判斷是文件還是目錄,如果是文件,則打贏出absoultPath;
2.是目錄則用遞歸,繼續判斷處理
不多說看代碼與註釋,理論再多還是得實踐!
import java.io.File;
/**
* 遍歷某目錄下的所有文件
* @author Administrator
*
*/
public class traverseDir {
public static void main(String[] args) {
String path = "D:/new";//這裏填寫你要遍歷目錄路徑
File file = new File(path);
traverse(file);
}
public static void traverse(File file){
//先對傳入參數做判空處理
if (null == file) {
return;
}
//遞歸頭,遞歸的出路
if (file.isFile()) {
System.out.println(file.getAbsolutePath());
return;
}
File[] files = file.listFiles();
//如果目錄爲空目錄則要return,否則會空指針異常
if (files == null) {
return;
}
for (File file2 : files) {
if (file2.isDirectory()) {
traverse(file2);//遞歸
}else {
System.out.println(file2.getAbsolutePath());
}
}
}
}
還補充一個例子就是,刪除某路徑下的文件及其子目錄
import java.io.File;
/**
* 刪除臨時文件及其內部文件夾
* @author Administrator
*
*/
public class DeleteFiles {
/**
* @param args
*/
public static void main(String[] args) {
String path = "F:\\temp";//這裏填寫你文件路徑
File file = new File(path);
delete(file, path);
}
public static void delete(File file,String path) {
// 違反驗證
if (file == null) {
return;
}
if (file.isFile()) {
file.delete();
}
File[] mFiles = file.listFiles();
if (mFiles == null) {
return;
}
for (File file2 : mFiles) {
delete(file2,path);//遞歸
}
//刪除目錄
if (!file.getAbsolutePath().equals(path)) {
file.delete();
}
}
}
注意:在寫文件路徑path時,最好是用反雙斜槓“\\”,如果你用"/"在比較
file.getAbsolutePath().equals(path)
時,會發現匹配不上,那麼刪除子目錄就不會成功!結語:會飛時別忘了破繭時的痛楚!