Java_File類

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類中的list()方法中可接受一個FileNameFilter參數,經過該參數能夠只列出符合條件的文件。listFiles()方法中能夠接受FileNameFilter或者FileFilter參數。
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));
相關文章
相關標籤/搜索