java.io.File
**File的每一個(gè)實(shí)例可以表示文件系統(tǒng)中的一個(gè)文件或者目錄,使用File可以:
1.訪問文件的目錄或者屬性(大小,名字和修改時(shí)間等)
2.操作文件或目錄(創(chuàng)建,刪除文件或目錄)
3.訪問目錄中的所有內(nèi)容,但是不可以訪問文件數(shù)據(jù)
**
File file = new File("demo.txt");//默認(rèn)在當(dāng)前目錄下
file.createNewFile();
long length = file.length();
String name = file.name();
boolean isFile = file.isFile();
boolean isHidden = file.isHidden();
System.out.println(length+""+name+""+isFile+""+isHidden);//0 demo.txt true false
long mod = file.lastModified();
Date date = new Date(mod);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("最后修改時(shí)間:"+sdf.format(date));//2016年6月12日 23:22:53
//刪除文件
if(file.exist()){
file.delete();
}
使用File創(chuàng)建目錄
File dir = new File("demo");
if(!dir.exits()){
dir.mkdir();
}
//在當(dāng)前目錄下創(chuàng)建目錄,若父目錄不存在則將不存在的父目錄一并創(chuàng)建
File dirs = new File(
"a"+File.separator+
"b"+File.separator+
"c"+File.separator+
"d"
);
if(!dirs.exists()){
dirs.mkdirs();
}
刪除目錄 刪除目錄要求目錄中必須是空的,刪除目錄前要確認(rèn)目錄以空,或者先刪除目錄當(dāng)中的文件再刪除目錄。
File dir = new File("demo");
if(dir.exits()){
dir.delete();
}
獲取當(dāng)前目錄下的所有子項(xiàng)
File dir = new FIle(".");
File[] dirs = dir.listFiles();
//遍歷
for(File file : subs){
if(file.isFile()){
System.out.println("文件:"+file.getName());
}else{
System.out.println("目錄:"+file.getName());
}
}
獲取當(dāng)前目錄下以“.”開頭的文件
File dir = new File(".");
File[] subs = dir.listFiles(new FileFilter(){
//FileFilter為一個(gè)過濾器,實(shí)現(xiàn)其accept方法,將返回滿足accept方法的文件
@Override
public boolean accept(File pathname){
String name = pathname.getName();
return name.startsWith(".");
}
});
System.out.println(Arrays.toString(subs));//[.\.classpath, .\.project, .\.settings]
遞歸實(shí)現(xiàn)文件和目錄的刪除
遞歸-方法當(dāng)中調(diào)方法,使用時(shí)要注意條件的限制,不可使得遞歸條件百分百執(zhí)行,否則進(jìn)入死循環(huán)。一個(gè)有意思的例子是電影《盜夢(mèng)空間》,電影中小李子調(diào)用了做夢(mèng)的方法開始做夢(mèng),在夢(mèng)中又繼續(xù)調(diào)用做夢(mèng)的方法做第二層夢(mèng),以此類推。注意,夢(mèng)中夢(mèng)的風(fēng)險(xiǎn)就是無法分清現(xiàn)實(shí)和夢(mèng)境,在一個(gè)夢(mèng)中醒來不一定就是現(xiàn)實(shí)。影片最后的懸念也在于旋轉(zhuǎn)的陀螺,小李子以為他和孩子們團(tuán)聚了,然而陀螺并沒有停下來,如果陀螺真的是判斷依據(jù)的話小李子是肯定還在做夢(mèng)的,但是這個(gè)依據(jù)本身也存在爭議。由此可見,導(dǎo)演只是設(shè)置了一個(gè)模棱兩可的遞歸死循環(huán)。
File dir = new File("a");
deleteFile(dir);
public static void deleteFile(File f){
if(f.isDirectory){
File[] sub = f.listFiles();
for(File file : sub){
deleteFile(file);
}
}
f.delete();
}