File是java.io包下面的一個類,表明與平臺無關的文件或者目錄。JAVA中,不管文件仍是目錄,均可以看做File類的一個對象。File類能對文件或目錄新建,刪除,獲取屬性等操做,可是不能直接操做文件內容(文件內容須要用數據流訪問)。java
JVM默認會將workspace做爲相對路徑,即user.dir系統變量所指路徑, 即若是這樣初始化file對象,File file = new File("."); 就是獲取了user.dir路徑。數組
String getName() -若是file對象是一個文件,則返回文件名,若是是路徑,則返回路徑的最後一級ide
File getAbsoluteFile() -返回絕對路徑spa
String getParent() -返回file對象所在目錄的父目錄code
exists()-文件或目錄是否存在對象
canRead()-是否可讀blog
isFile()-是不是文件接口
isDirectory()-是不是目錄get
long lastModified() -最後修改時間it
long length() -文件長度
createFile() -成功true,失敗false
delete()
mkdir() -建立目錄 ,file對象必須對應一個路徑
String[] list() - 若是file對象是一個路徑,list()將返回一個數組,若是路徑下沒有文件和子目錄,則數組爲empty;若是file對象是一個文件,或者file路徑不存在,或者發生IO錯誤,則list()返回null
File[] listFiles() -同上,只不過返回的是File類型數組
若是FilenameFilter做爲file.list()的參數傳入,實現FilenameFilter接口的accept方法,能夠實現文件過濾。
accept方法有兩個參數,dir和name,一般能夠對name作條件過濾。
下面是File類的綜合演示,
1 package io; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 import java.io.IOException; 6 7 public class FileTest { 8 public static void main(String[] args) throws IOException { 9 //JVM默認會將workspace做爲相對路徑,即user.dir系統變量所指路徑 10 File file = new File("."); 11 File file2 = new File("C:/PROJECT/JavaBasic/PROJECT_JavaBasic/tmp.txt"); 12 File file3 = new File("./tmp.txt"); 13 //若是file對象是一個文件,則返回文件名,若是是路徑,則返回路徑的最後一級 14 System.out.println(file.getName()); 15 //當file爲相對路徑時,獲取父路徑可能會出錯 16 file3.delete(); 17 System.out.println("父路徑:"+file3.getParent()); 18 //獲取絕對路徑 19 System.out.println(file.getAbsoluteFile()); 20 //getAbsoluteFile返回的是File類型, getAbsolutePath則返回String類型 21 System.out.println(file.getAbsoluteFile().getParent()); 22 //在當前路徑下建立一個臨時文件,第三個參數必須是路徑,不然會報錯 23 File tmpFile = File.createTempFile("aaa", ".txt", file); 24 //JVM退出時刪除該文件 25 tmpFile.deleteOnExit(); 26 //以系統時間做爲名稱建立文件 27 File newFile = new File(System.currentTimeMillis()+""); 28 System.out.println("newFile是否存在:"+newFile.exists()); 29 //以指定file對象來建立文件 30 newFile.createNewFile(); 31 System.out.println("newFile是否存是文件:"+newFile.isFile()); 32 System.out.println("newFile是否存是目錄:"+newFile.isDirectory()); 33 System.out.println("以newFile對象建立目錄是否成功:"+newFile.mkdir()); 34 //若是file對象是一個路徑,list()將返回一個數組,若是路徑下沒有文件和子目錄,則數組爲empty 35 //若是file對象是一個文件,或者file路徑不存在,或者發生IO錯誤,則list()返回null 36 String[] fileList = file.list(); 37 System.out.println("====當前路徑下的全部文件和目錄以下===="); 38 for (String fileName : fileList) { 39 System.out.println(fileName); 40 } 41 //listRoots靜態方法列出全部磁盤根路徑 42 File[] roots = File.listRoots(); 43 System.out.println("====系統全部磁盤根路徑以下===="); 44 for (File root : roots) { 45 System.out.println(root); 46 } 47 48 String[] nameList = file.list(new FilenameFilter() { 49 @Override 50 public boolean accept(File dir, String name) { 51 // TODO Auto-generated method stub 52 return name.endsWith(".txt") || new File(name).isDirectory(); 53 } 54 }); 55 System.out.println("====過濾條件後以下===="); 56 for (String filterName : nameList) { 57 System.out.println(filterName); 58 } 59 60 } 61 }
輸出結果以下,
1 . 2 父路徑:. 3 C:\PROJECT\JavaBasic\PROJECT_JavaBasic\. 4 C:\PROJECT\JavaBasic\PROJECT_JavaBasic 5 newFile是否存在:false 6 newFile是否存是文件:true 7 newFile是否存是目錄:false 8 以newFile對象建立目錄是否成功:false 9 ====當前路徑下的全部文件和目錄以下==== 10 .classpath 11 .project 12 .settings 13 1480521332106 14 1480521357843 15 1480521378187 16 1480522448612 17 1480522471511 18 1480522477413 19 1480522484941 20 1480522505253 21 aaa2174524463556527449.txt 22 bin 23 src 24 ====系統全部磁盤根路徑以下==== 25 C:\ 26 D:\ 27 E:\ 28 F:\ 29 ====過濾條件後以下==== 30 .settings 31 aaa2174524463556527449.txt 32 bin 33 src