Day55.IO流複習 -Java常用類、集合、IO#

轉行一點成功發表於2020-09-28

IO流複習

.

File類的使用

1. File類的理解

1. File類的一個物件,代表一個檔案或一個檔案目錄(俗稱: 資料夾)
2. File類宣告在java.io包下
3. File類中涉及到關於檔案或檔案目錄的建立、刪除、重新命名、修改時間、檔案大小等方法,
   並未涉及到寫入或讀取檔案內容的操作。如果需要讀取或寫入檔案內容。就必須使用IO流來完成
4. 後續File類的物件常會作為引數傳遞到流的構造器中,指明讀取或寫入的"終點"

2. File的例項化

常用構造器

File(String filePath)
File(String parentPath,String childPath)
File(File parentPath,String childPath)

路徑的分類

相對路徑:相較於某個路徑下,指明的路徑。
絕對路徑:包含碟符在內的路徑或檔案目錄的路徑

說明:
    IDEA中:
    如果大家開發使用Junit中的單元測試方法測試,相對路徑即為當前Module下。
    如果使用main()測試,相對路徑即為當前的Project下。
    Eclipse中:
    不管使用單元測試方法還是使用main()測試,相對路徑都是Project下。    
    

路徑分隔符

windows: \\
unix、url: /

3. File類的常用方法

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-YyJuCKx0-1601301910240)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20200928220402452.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-4alnVWDT-1601301910243)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20200928220411023.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-rceekVCk-1601301910246)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20200928220420838.png)]

/*
-File類的獲取功能:
 public String getAbsolutePath(): 獲取絕對(完整)路徑
 public String getPath(): 獲取路徑
 public String getName(): 獲取名稱
 public String getParent(): 獲取上層檔案目錄路徑。若無,返回null
 public long length(): 獲取檔案長度(即: 位元組數)。 不能獲取目錄的長度。
 public long lastModified(): 獲取最後一次的修改時間,毫秒值

 如下方法適用於檔案目錄
 public String[] list(): 獲取指定目錄下的所有檔案或者檔案目錄的名稱陣列
 public File[] listFile(): 獲取指定目錄下的所有檔案或者檔案目錄的File陣列

-File類的重新命名功能:
public boolean renameTo(File dest): 把檔案重新命名為指定的檔案路徑

-File類的判斷功能:
public boolean isDirectory(): 判斷是否是檔案目錄
public boolean isFile(): 判斷是否是檔案
public boolean exists: 判斷是否存在
public boolean canRead(): 判斷是否可讀
public boolean canWrite(): 判斷是否可寫
public boolean isHidden(): 判斷是否隱藏

-File類的建立功能
public boolean createNewFile(): 建立檔案。若檔案存在,則不建立,返回false
public boolean mkdir(): 建立檔案目錄。如果此檔案目錄存在,就不建立了。
                        如果此檔案目錄的上級目錄不存在,也不建立。
public boolean mkdirs(): 建立檔案目錄。如果上級檔案目錄不存在,一併建立

-File類的刪除功能
public boolean delete(): 刪除檔案或者資料夾

 */
@Test
    public void test2(){
    File file1 = new File("hello.txt");
    File file2 = new File("D:\\io\\hi.txt");

    System.out.println(file1.getAbsolutePath());
    System.out.println(file1.getPath());
    System.out.println(file1.getName());
    System.out.println(file1.getParent());
    System.out.println(file1.length());
    System.out.println(new Date(file1.lastModified()));

    System.out.println();

    System.out.println(file2.getAbsolutePath());
    System.out.println(file2.getPath());
    System.out.println(file2.getName());
    System.out.println(file2.getParent());
    System.out.println(file2.length());
    System.out.println(file2.lastModified());
}
@Test
public void test3(){
    File file = new File("D:\\321");

    String[] list = file.list();
    for(String s:list){
        System.out.println(s);
    }

    File[] listFiles = file.listFiles();
    for (File f : listFiles){
        System.out.println(f);
    }
}

/*
public boolean renameTo(File dest): 把檔案重新命名為指定的檔案路徑
    比如: file1.renameTo(file2)為例
        要想保證返回為true,需要file1在硬碟中是存在的,且file2不能在硬碟中存在。
 */

@Test
public void test4(){
    File file1 = new File("hello.txt");
    File file2 = new File("D:\\io\\hi.txt");

    boolean renameTo = file1.renameTo(file2);
    System.out.println(renameTo);

}

/*
-File類的判斷功能:
public boolean isDirectory(): 判斷是否是檔案目錄
public boolean isFile(): 判斷是否是檔案
public boolean exists: 判斷是否存在
public boolean canRead(): 判斷是否可讀
public boolean canWrite(): 判斷是否可寫
public boolean isHidden(): 判斷是否隱藏
 */
@Test
public void test5(){
    File file1 = new File("hello.txt");

    System.out.println(file1.isDirectory());
    System.out.println(file1.isFile());
    System.out.println(file1.exists());
    System.out.println(file1.canRead());
    System.out.println(file1.canWrite());
    System.out.println(file1.isHidden());

    System.out.println();

    File file2 = new File("D:\\io");

    System.out.println(file2.isDirectory());
    System.out.println(file2.isFile());
    System.out.println(file2.exists());
    System.out.println(file2.canRead());
    System.out.println(file2.canWrite());
    System.out.println(file2.isHidden());
}
/*
-File類的建立功能: 建立硬碟中對應的檔案或檔案目錄
public boolean createNewFile(): 建立檔案。若檔案存在,則不建立,返回false
public boolean mkdir(): 建立檔案目錄。如果此檔案目錄存在,就不建立了。
                        如果此檔案目錄的上級目錄不存在,也不建立。
public boolean mkdirs(): 建立檔案目錄。如果上級檔案目錄不存在,一併建立

-File類的刪除功能:  刪除硬碟中對應的檔案或檔案目錄
public boolean delete(): 刪除檔案或者資料夾
    注意事項:
    Java中的刪除不走回收站
 */
@Test
public void test6() throws IOException {
    //檔案的建立
    File file1 = new File("hi.txt");
    if (!file1.exists()){
        file1.createNewFile();
        System.out.println("建立成功");
    }else{//檔案存在
        file1.delete();
        System.out.println("刪除成功");
    }
}

@Test
public void test7() {
    //檔案目錄的建立
    File file1 = new File("D:\\io\\io1\\io3");
    boolean mkdir1 = file1.mkdir();
    if (mkdir1) {
        System.out.println("建立成功1");
    }else {
        System.out.println("建立失敗1");
    }


    File file2 = new File("D:\\io\\io1\\io4");
    boolean mkdir2 = file2.mkdirs();
    if (mkdir2) {
        System.out.println("建立成功2");
    }else {
        System.out.println("建立失敗2");
    }
}

暫時寫到 File類

相關文章