日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】文件操作

發布時間:2024/7/5 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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 常用方法

獲取

  • getAbsolutePath
  • getPath
  • getName
  • length:文件長度
  • public static void method() {File f1 = new File("a.txt");//相對路徑String absolutePath = f1.getAbsolutePath();System.out.println(absolutePath);//打印絕對路徑String path = f1.getPath();System.out.println(path);//打印路徑參數 a.txtSystem.out.println(f1.toString());//toString源碼調用的就是getPath()File f2 = new File("E:\\download\\learn\\a.txt");File f3 = new File("a.txt");File f4 = new File("E:\\download\\learn");//getName打印結尾部分 文件名/文件夾名System.out.println(f2.getName());//a.txtSystem.out.println(f3.getName());//a.txt 文件名System.out.println(f4.getName());//learn 文件夾名//length返回的是文件長度 //獲取構造方法指定的文件的大小 單位為byte//文件不存在返回0 文件夾沒有大小概念 也是0System.out.println(f2.length());}

    判斷

  • exists():路徑是否存在
  • isDirectory():file對象是否是文件夾,路徑不存在返回false
  • isFile():file對象是否是文件,路徑不存在返回false
  • public static void method() {File f1 = new File("a.txt");//相對路徑System.out.println(f1.exists());File f2 = new File("E:\\download\\learn");System.out.print(f1.isFile());System.out.println(" " + f1.isDirectory());//true falseSystem.out.print(f2.isDirectory());System.out.println(" " + f2.isFile());//true false}

    創建和刪除

  • createNewFile():當該名稱的文件不存在的時候,創建一個空文件,返回true。若文件存在,不創建返回false。此方法只能創建文件,不能創建文件夾。路徑必須存在,否則會拋出異常。【調用該方法會拋出IO異常 要么throws 要么try-catch】
  • delete():刪除file表示的文件或目錄,謹慎使用,直接在硬盤刪除文件/文件夾,不走回收站。注意:如果文件夾中有東西,則不會刪除成功,返回false。如果路徑不存在,返回false。
  • public static void method() throws IOException {File f1 = new File("a.txt");//相對路徑 存在boolean b1 = f1.createNewFile();System.out.println(b1);// falseFile f2 = new File("b.txt");//不存在 創建返回trueboolean b2 = f2.createNewFile();System.out.println(b2);// trueFile f3 = new File("F://none");//路徑不存在System.out.println(f3.createNewFile());//報錯:系統找不到指定的路徑}
  • mkdir():創建file表示的目錄
  • mkdirs():創建file表示的目錄 包括必須但不存在的父級目錄
  • public static void method() throws IOException {File f1 = new File("E:\\download\\newlearn");//新文件夾boolean mkdir1 = f1.mkdir();System.out.println(mkdir1);//trueFile f2 = new File("E:\\download\\learn");//已存在文件夾boolean mkdir2 = f2.mkdir();System.out.println(mkdir2);//falseFile f3 = new File("E:\\download\\newlearn\\learn\\learn");System.out.println(f3.mkdir());// false不能創建多級目錄System.out.println(f3.mkdirs());// true 可以創建多級目錄File f4 = new File("F:\\download");//路徑不存在System.out.println(f4.mkdir());// false}

    遍歷目錄

  • String[] list()
  • File[] listFile()
  • 注意
    如果路徑不存在,會報空指針異常。
    如果路徑不是目錄,也會報空指針異常。
    可以遍歷到隱藏文件夾。

    public static void method() throws IOException {File f1 = new File("E:\\download\\learn\\");String[] list = f1.list();for(String i: list){//相對路徑System.out.println(i);}File[] list = f1.listFiles();for(File i: list){//絕對路徑System.out.println(i);}}

    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就會保存到數組中

    public static void getAllFiles(File dir){File[] files = dir.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {if (pathname.isDirectory()){return true;}return pathname.toString().endsWith("txt");}});for(File file: files){if(file.isDirectory()){getAllFiles(file);}else {System.out.println(file);}}}

    輸出:

    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】文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。