<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 概述 當需要把內存中的數據存儲到持久化設備上這個動作稱為輸出(寫)Output操作。 當把持久設備上的數據讀取到內存中的這個動作稱為輸入(讀)Input操作。 因此我們把這種輸入和輸出動作稱為IO操作 # File類 File文件和目錄路徑名的抽象表示形式。即,Java中把文件或者目錄(文件夾)都封裝成File對象。也就是說如果我們要去操作硬盤上的文件,或者文件夾只要找到File這個類即可 ## 分隔符 windows的分割符是`\`, linux下用的是`/` 在File類里面有一個常量 ~~~ public static final String separator; ~~~ ## 換行符 jdk1.7以上 ~~~ String line = System.lineSeparator(); ~~~ ## 構造函數 ![](https://box.kancloud.cn/265751b9fe54dd9b01d091f270c02743_914x201.png) 演示: ~~~ //File構造函數演示 String pathName = "e:\\java_code\\day22e\\hello.java"; File f1 = new File(pathName);//將Test22文件封裝成File對象。注意;有可以封裝不存在文件或者文件夾,變成對象。 System.out.println(f1); File f2 = new File("e:\\java_code\\day22e","hello.java"); System.out.println(f2); //將parent封裝成file對象。 File dir = new File("e:\\java_code\\day22e"); File f3 = new File(dir,"hello.java"); System.out.println(f3); ~~~ ## File類的方法 創建完了File對象之后,那么File類中都有如下常用方法,可以獲取文件相關信息 ![](https://box.kancloud.cn/e1d67431242694852104a6818fc316d8_923x350.png) ~~~ 獲取父路徑 public File getParentFile(); 獲取文件最后修改時間 public long lastModified(); ~~~ ~~~ //創建文件對象 File file = new File("Test22.java"); //獲取文件的絕對路徑,即全路徑 String absPath = file.getAbsolutePath(); //File中封裝的路徑是什么獲取到的就是什么。 String path = file.getPath(); //獲取文件名稱 String filename = file.getName(); //獲取文件大小 long size = file.length(); ~~~ ## 文件和文件夾的創建刪除等 ![](https://box.kancloud.cn/ad707be2c92b8dc874b3b84779274017_909x332.png) ~~~ // 對文件或者文件加進行操作。 File file = new File("e:\\file.txt"); // 創建文件,如果文件不存在,創建 true 如果文件存在,則不創建 false。 如果路徑錯誤,IOException。 boolean b1 = file.createNewFile(); System.out.println("b1=" + b1); //-----------刪除文件操作-------注意:不去回收站。慎用------ boolean b2 = file.delete(); System.out.println("b2="+b2); //-----------需要判斷文件是否存在------------ boolean b3 = file.exists(); System.out.println("b3="+b3); //-----------對目錄操作 創建,刪除,判斷------------ File dir = new File("e:\\abc"); //mkdir()創建單個目錄。//dir.mkdirs();創建多級目錄 boolean b4 = dir.mkdir(); System.out.println("b4="+b4); //刪除目錄時,如果目錄中有內容,無法直接刪除。 boolean b5 = dir.delete(); //只有將目錄中的內容都刪除后,保證該目錄為空。這時這個目錄才可以刪除。 System.out.println("b5=" + b5); //-----------判斷文件,目錄------------ File f = new File("e:\\javahaha");// 要判斷是否是文件還是目錄,必須先判斷存在。 // f.mkdir();//f.createNewFile(); System.out.println(f.isFile()); System.out.println(f.isDirectory()); ~~~ ## listFiles()方法 ![](https://box.kancloud.cn/60bd1f7afdc8b3108ef750bdf5f4f3e5_908x117.png) ~~~ File dir = new File("e:\\java_code"); //獲取的是目錄下的當前的文件以及文件夾的名稱。 String[] names = dir.list(); for(String name : names){ System.out.println(name); } //獲取目錄下當前文件以及文件對象,只要拿到了文件對象,那么就可以獲取其中想要的信息 File[] files = dir.listFiles(); for(File file : files){ System.out.println(file); } ~~~ 注意:在獲取指定目錄下的文件或者文件夾時必須滿足下面兩個條件 1,指定的目錄必須是存在的, 2,指定的必須是目錄。否則容易引發返回數組為null,出現NullPointerException ## 文件過濾器 File類中重載的listFiles方法,并且接受指定的過濾器 ![](https://box.kancloud.cn/c424e957b89e247faaa4c94d933d8a82_925x255.png) * 測試類 ~~~ public class FileDemo2 { public static void main(String[] args) { //獲取擴展名為.java所有文件 //創建File對象 File file = new File("E:\\code\\day11_code"); //獲取指定擴展名的文件,由于要對所有文件進行擴展名篩選,因此調用方法需要傳遞過濾器 File[] files = file.listFiles(new MyFileFilter()); //遍歷獲取到的所有符合條件的文件 for (File f : files) { System.out.println(f); } } } ~~~ * 自定類繼承FilenameFilter過濾器接口 ~~~ //定義類實現文件名稱FilenameFilter過濾器 class MyFileFilter implements FilenameFilter{ public boolean accept(File dir, String name) { return name.endsWith(".java"); } } ~~~ 在listFiles(FileFilter filter) 也可以接受一個FileFilter過濾器,它和我們講的FilenameFilter有啥區別呢? ![](https://box.kancloud.cn/304ea5be9c4e9315a38d9c1b456802f8_924x244.png) FilenameFilter過濾器中的accept方法接受兩個參數,一個當前文件或文件夾所在的路徑,一個是當前文件或文件夾對象的名稱。 FileFilter 過濾器中的accept方法接受一個參數,這個參數就當前文件或文件夾對象 **當我們需要過濾文件名稱時就可以使用FilenameFilter這個過濾器,當我們想對當前文件或文件夾進行過濾,就可以使用FileFilter ,比如需要當前目錄下的所有文件夾,就可以使用FileFilter 過濾器**。 * 測試類 ~~~ public class FileDemo2 { public static void main(String[] args) { //獲取擴展名為.java所有文件 //創建File對象 File file = new File("E:\\code\\day11_code"); //獲取指定目錄下的文件夾 File[] files = file.listFiles(new FileFileterByDir()); //遍歷獲取到的所有符合條件的文件 for (File f : files) { System.out.println(f); } } } ~~~ * 自定義類繼承FileFilter過濾器接口 ~~~ //文件過濾器 class FileFileterByDir implements FileFilter{ public boolean accept(File pathname) { return pathname.isDirectory(); } } ~~~ # 遞歸打印所有子目錄中的文件路徑 編寫一個方法用來打印指定目錄中的文件路徑,并進行方法的調用 要求:若指定的目錄有子目錄,那么把子目錄中的文件路徑也打印出來 步驟: 1. 指定要打印的目錄File對象 2. 調用getFileAll()方法 2.1 獲取指定目錄中的所有File對象 2.2 遍歷得到每一個File對象 2.3 判斷當前File 對象是否是目錄 判斷結果為true,說明為目錄,通過遞歸,再次調用步驟2的getFileAll()方法 判斷結果為false,說明是文件,打印文件的路徑 * 代碼演示 ~~~ public class FileDemo2 { public static void main(String[] args) { File file = new File("d:\\test"); getFileAll(file); } //獲取指定目錄以及子目錄中的所有的文件 public static void getFileAll(File file) { File[] files = file.listFiles(); //遍歷當前目錄下的所有文件和文件夾 for (File f : files) { //判斷當前遍歷到的是否為目錄 if(f.isDirectory()){ //是目錄,繼續獲取這個目錄下的所有文件和文件夾 getFileAll(f); }else{ //不是目錄,說明當前f就是文件,那么就打印出來 System.out.println(f); } } } } ~~~ # 搜索指定目錄中的.java文件(含子目錄) 需求:打印指定目錄即所有子目錄中的.java文件的文件路徑 要求:編寫一個方法用來打印指定目錄中的.java文件路徑,并進行方法的調用 若指定的目錄有子目錄,那么把子目錄中的.java文件路徑也打印出來 步驟: 1. 指定要打印的目錄File對象 2. 調用getFileAll()方法,傳入要打印的目錄File對象 2.1 通過FilenameFilter過濾器獲取指定目錄中的所有.java類型的File對象 2.2 遍歷得到每一個File對象 2.3 判斷當前File 對象是否是目錄 判斷結果為true,說明為目錄,通過遞歸,再次調用步驟2的getFileAll()方法 判斷結果為false,說明是文件,打印文件的路徑 實現代碼步驟 * 測試類 ~~~ public class FileDemo4 { public static void main(String[] args) { File file = new File("d:\\test"); getFileAll(file); } //獲取指定目錄以及子目錄中的所有的文件 public static void getFileAll(File file) { File[] files = file.listFiles(MyFileFilter()); //遍歷當前目錄下的所有文件和文件夾 for (File f : files) { //判斷當前遍歷到的是否為目錄 if(f.isDirectory()){ //是目錄,繼續獲取這個目錄下的所有文件和文件夾 getFileAll(f); }else{ //不是目錄,說明當前f就是文件,那么就打印出來 System.out.println(f); } } } } ~~~ * 自定類繼承FilenameFilter過濾器接口 ~~~ //定義類實現文件名稱FilenameFilter過濾器 class MyFileFilter implements FilenameFilter{ public boolean accept(File dir, String name) { return name.endsWith(".java"); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看