File類以抽象的方式表明文件名和目錄路徑。該類主要用於文件和目錄的建立、查找、刪除等。先來看一下File的構造方法:html
// 經過將給定的路徑名字符串轉換爲抽象路徑名來建立新的 File實例 File f = new File("E:\\Java"); // 從父路徑名字符串和子路徑名字符串建立新的 File實例 File f1 = new File("E:\\","PersonalWork"); File f1_1 = new File((String) null,"PersonalWork"); // 從父抽象路徑名和子路徑名字符串建立新的 File實例。 File f2 = new File(new File("."),"MyTest"); File f2_1 = new File((File)null,"MyTest"); // 經過將給定的 file: URI轉換爲抽象路徑名來建立新的 File實例 File f3 = null; try { f3 = new File(new URI("file:///E:/WorkProjects/test.html")); } catch (URISyntaxException e) { e.printStackTrace(); } // 實質上:當f1_1, f2_1的第一個參數都爲 null, 與 f 的實現方式是一致, // 都是經過 WinNTFilesSystem中的 normalize 方法檢查給定的路徑名字符串是否正常。 // 返回此抽象路徑名的路徑名字符串 System.out.println(f); // E:\Java System.out.println(f1); //E:\PersonalWork System.out.println(f1_1); // PersonalWork System.out.println(f2); //.\MyTest System.out.println(f2_1); // MyTest System.out.println(f3); //E:\WorkProjects\test.html // File類的靜態變量 System.out.println("---"+File.separator); // \ 與系統有關的默認名稱分隔符 System.out.println("---"+File.pathSeparator);// ; 與系統相關的路徑分隔符字符
1訪問文件名相關的方法java
File file = new File("E:\\WorkProjects\\test.html"); File file2 = new File("test.html"); System.out.println(file.getName()); // test.html 返回文件名或路徑名(若是是路徑,返回最後一級子路徑) System.out.println(file.getParent()); // E:\WorkProjects 返回對應目錄(最後一級子目錄)的父目錄名 System.out.println(file.getParentFile()); // 返回父目錄的抽象路徑名 System.out.println(file2.getPath()); // test.html 返回對應的路徑(相對) System.out.println(file2.getAbsolutePath());// E:\WorkProjects\test.html 返回對應的絕對路徑 System.out.println(file2.getAbsoluteFile());// 返回抽象的絕對路徑 System.out.println(file.renameTo(new File("E:\\WorkProjects\\test1.html")));// 重命名文件 成功返回true,不然false try { System.out.println(file.getCanonicalFile());// 返回此抽象路徑名的規範形式。 System.out.println(file.getCanonicalPath());// 返回此抽象路徑名的規範路徑名字符串。 } catch (IOException e) { e.printStackTrace(); }
2.文件檢測相關方法ide
File file = new File("E:\\WorkProjects\\test1.html"); System.out.println(file.exists()); //true 判斷文件或者目錄是否存在 System.out.println(file.isFile()); //true 判斷是不是文件 System.out.println(file.isDirectory()); //false 判斷是不是目錄 System.out.println(file.isHidden()); //false 判斷是不是隱藏文件 System.out.println(file.isAbsolute()); //true 判斷是不是絕對路徑 System.out.println(file.canExecute()); //true 判斷是否可執行 System.out.println(file.canRead()); //true 判斷是否可讀 System.out.println(file.canWrite()); //true 判斷是否可寫
3文件操做相關方法code
File file = new File("E:\\WorkProjects\\test.txt"); File file2 = new File("E:\\zzz\\www\\"); try { System.out.println(file.createNewFile()); // 建立文件,若文件不存在且建立成功,返回true。建立失敗(或存在)返回false // 在 E:\zzz 目錄下建立一個文件名爲 test0001...bb 的臨時文件 File temp =File.createTempFile("test0001","bb",new File("E:\\zzz")); if(temp.exists()) { System.out.println("create temp success");} } catch (IOException e) { e.printStackTrace(); } System.out.println(file.delete()); //刪除文件或目錄,若刪除文件成功返回true不然 false;只能刪除空目錄,成功true不然 false // 註冊一個刪除的鉤子,指定當java虛擬機退出時,刪除對應的文件或目錄 // 若對應的目錄爲空目錄則刪除該空目錄,不然不刪除該目錄 // 若對應的爲文件則刪除文件。 file2.deleteOnExit(); System.out.println("----");
4目錄操做相關方法orm
File file = new File("E:\\WorkProjects\\"); File file2 = new File("E:\\zzz\\www\\aa\\bb"); System.out.println(file2.mkdir()); // 建立目錄,成功返回true不然false; 若父目錄不存在則建立失敗 System.out.println(file2.mkdirs()); // 遞歸建立,不須要考慮父目錄是否存在。若路徑存在則建立失敗 false String [] list = file.list(); // 列出該目錄下的全部文件名及子目錄名 System.out.println(Arrays.toString(list)); //例如: test.txt File[] files = file.listFiles(); // 列出該目錄下的全部文件路徑名及子目錄路徑名 System.out.println(Arrays.toString(files)); //例如: E:\WorkProjects\test.txt File[] root = File.listRoots(); // 列出系統全部根路徑 System.out.println(Arrays.toString(root)); //例如: window上 [C:\, D:\, E:\, F:\]
5文件相關信息htm
File file = new File("E:\\WorkProjects\\test1.html"); System.out.println(new Date(file.lastModified())); //Sun Aug 01 17:10:10 CST 2018 返回文件最後修改的時間 System.out.println(file.length()); //1661 返回文件內容的長度
6.設置文件相關屬性遞歸
File file = new File("E:\\WorkProjects"); System.out.println(file.setExecutable(true)); // 設置文件或目錄可執行 System.out.println(file.setReadable(true)); // 設置文件或目錄可讀 System.out.println(file.setWritable(true)); // 設置文件或目錄可寫 System.out.println(file.setReadOnly()); // 設置文件或目錄只容許讀取操做 System.out.println(file.setLastModified(System.currentTimeMillis())); // 設置文件或目錄最後修改時間
File file = new File("E:\\WorkProjects"); File file1 = new File("."); // 列出該目錄下不包含隱藏文件或目錄的全部文件及子目錄 // java 1.8 Lambda表達式寫法 //File[] files = file.listFiles(pathname -> !pathname.isHidden()); File[] files = file.listFiles(pathname -> { if(!pathname.isHidden()) { return true; } System.out.println(pathname+" it's a hidden file or folder"); return false; }); /*File[] files = file.listFiles(new FileFilter() { //java.io.FileFilter 過濾器 @Override public boolean accept(File pathname) { if(!pathname.isHidden()) { //System.out.println( "accept--"+ "It isn't a hidden file or folder"); return true; } System.out.println(pathname+" it's a hidden file"); return false; } });*/ System.out.println(Arrays.toString(files));
--------------------------------分割線--------------------------------- //列出該目錄下文件名以 .java結尾,或者文件對應一個路徑 //String [] nameList = file1.list((dir, name) -> (name.endsWith(".java")|| new File(name).isDirectory()); String [] nameList = file1.list((dir, name) -> { if(name.endsWith(".java")|| new File(name).isDirectory()){ return true; } System.out.println("dir:"+dir+ " , name"+name ); return false; }); /* String [] nameList = file1.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { if(name.endsWith(".java")|| new File(name).isDirectory()){ return true; } System.out.println("dir:"+dir+ " , name"+name ); return false; } });*/ System.out.println(Arrays.toString(nameList));