【Java】文件操作
1 File類的靜態成員遍歷
| static String pathSeparator | 與系統有關的路徑分隔符,為了方便,它被表示為一個字符串。 |
| static char pathSeparatorChar | 與系統有關的路徑分隔符。 |
| static String separator | 與系統有關的默認名稱分隔符,為了方便,它被表示為一個字符串。 |
| static char separatorChar | 與系統有關的默認名稱分隔符。 |
路徑分割符:Windows:分號 Linux:冒號
文件名稱分割符:Windows:\反斜杠 Linux:/正斜杠
注意:操作路徑不能寫死,應該使用File.separator來連接
2 絕對路徑和相對路徑
絕對路徑:以盤符開始的完整路徑
相對路徑:相對于當前項目的根目錄
C:\files\file.txt —> file.txt
路徑不區分大小寫
反斜杠是轉義符 兩個反斜杠表示一個反斜杠
3 File類的構造方法
public static void constructMethod() {File file = new File("C://test.txt");System.out.println(file);//重寫了Object類的toString方法 打印文件路徑 路徑可以不真實存在File file2 = new File("C:","a.txt");//父子路徑單獨書寫 變化靈活System.out.println(file2);File file3 = new File("c:\\");//第一個參數的類型是File類而不是StringFile file4 = new File(file3,"a.txt");System.out.println(file4);}4 常用方法
獲取
判斷
創建和刪除
遍歷目錄
注意:
如果路徑不存在,會報空指針異常。
如果路徑不是目錄,也會報空指針異常。
可以遍歷到隱藏文件夾。
5 案例:遞歸打印多級目錄
public static void main(String[] args) {File dir = new File("E:\\download\\1");getAllFiles(dir);}public static void getAllFiles(File dir){File[] files = dir.listFiles();for(File file: files){System.out.println(file);}}打印結果:顯示不全 沒有子文件夾 2里面還有3和4
E:\download\1\2
E:\download\1\2.doc
E:\download\1\2.txt
解決方法:如果遇到文件夾,則遞歸調用getAllFiles()
public static void main(String[] args) {File dir = new File("E:\\download\\1");getAllFiles(dir);}public static void getAllFiles(File dir){File[] files = dir.listFiles();for(File file: files){if(file.isDirectory()){getAllFiles(file);}System.out.println(file);}}E:\download\1\2\3\4.txt
E:\download\1\2\3
E:\download\1\2\3.pptx
E:\download\1\2\3.txt
E:\download\1\2
E:\download\1\2.docx
E:\download\1\2.txt
6 案例:文件搜索
只要txt文件,其他的不需要。
public class FileTest {public static void main(String[] args) {File dir = new File("E:\\download\\1");getAllFiles(dir);}public static void getAllFiles(File dir){File[] files = dir.listFiles();for(File file: files){if(file.isDirectory()){getAllFiles(file);}else {if(file.toString().endsWith(".txt")){System.out.println(file);}}}} }7 文件過濾器
File類中有兩個listFiles的重載方法,參數類型是過濾器
java.io.fileFilter接口 用于抽象路徑名的過濾器,抽象方法accept(File pathname)
java.io.fileNameFilter接口 用于過濾文件名稱,抽象方法accept(File dir, String name)
文件對象用這個構造方法 —> File(dir, name)
需要自己寫實現類,重寫抽象方法,自定義過濾規則
listFiles對目錄進行遍歷,獲取文件和文件夾并封裝為File對象
然后調用accept方法 講File對象傳遞到accept的參數
如果返回值是false就會保存到數組中
輸出:
E:\download\1\2\3\4.txt
E:\download\1\2\3.txt
E:\download\1\2.txt
Lambda簡化
File[] files=dir.listFiles((pathname)-> pathname.isDirectory()||pathname.getName().endsWith(".txt"));總結
以上是生活随笔為你收集整理的【Java】文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决AndroidStudio添加Pro
- 下一篇: java美元兑换,(Java实现) 美元