java 基礎 (IO 流 File 類)
阿新 • • 發佈:2021-10-17
- java.io.File類: 檔案和檔案目6徑的抽象表示形式,與平臺無關
- File 能新建、刪除、重新命名檔案和目錄,但 File 不能訪問檔案內容本身。如果
需要訪問檔案內容本身,則需要使用輸入/輸出流。 - 想要在 Java 程式中表示一個真實存在的檔案或目錄,那麼必須有一個 File 物件,但是 Java 程式中的一個 File 物件,可能沒有一個真實存在的檔案或目錄。
- File物件可以作為引數傳遞給流的構造器
* public File(String pathname) 以 pathname 為路徑建立 File物件,可以是絕對路徑或者相對路徑,如果 pathname 是相對路徑,則預設的當前路徑在系統屬性 user.dir 中儲存。 - 絕對路徑: 是一個固定的路徑,從碟符開始 - 相對路徑: 是相對於某個位置開始 * public File(String parent,String child) 以 parent 為父路徑,child 為子路徑建立 File 物件。 * public File(File parent,String child) 根據一個父File物件和子檔案路徑建立File物件
* 路徑中的每級目錄之間用一個路徑分隔符隔開。
* 路徑分隔符和系統有關:
- windows 和 DOS 系統預設使用 “\” 來表示
- UNIX 和 URL 使用 “/” 來表示
* Java 程式支援跨平臺執行,因此路徑分隔符要慎用。
* 為了解決這個隱患,File 類提供了一個常量:
public static final String separator。根據作業系統,動態的提供分隔符。
* File 類的建立功能 - public boolean createNewFile(): 建立檔案。若檔案存在,則不建立,返回false - public boolean mkdir(): 建立檔案目錄。如果此檔案目錄存在,就不建立了。如果此檔案目錄的上層目錄不存在,也不建立。 - public boolean mkdirs(): 建立檔案目錄。如果上層檔案目錄不存在,一併建立 注意事項: 如果你建立檔案或者檔案目錄沒有寫碟符路徑,那麼,預設在專案路徑下。 * File 類的刪除功能 public boolean delete(): 刪除檔案或者資料夾 刪除注意事項: Java 中的刪除不走回收站。 要刪除一個檔案目錄,請注意該檔案目錄內不能包含檔案或者檔案目錄
File類的使用
1. File 類的一個物件,代表一個檔案或一個檔案目錄(俗稱:資料夾)
2. FiLe 類宣告在 java.io 包下
3. Fil 類中涉及到關於檔案或檔案目錄的建立、刪除、重新命名、修改時間、檔案大小等方法,
並來涉及到寫入或讀取檔案內容的操作。如果需要讀取或寫入檔案內容,必須使用 IO 流來完成。
FileTest.java
package com.klvchen.java3; import org.junit.Test; import java.io.File; import java.io.IOException; public class FileTest { @Test public void test1(){ //構造器1 File file1 = new File("hello.txt");//相當於當前 module File file2 = new File("G:\\java_course\\day08\\he.txt"); System.out.println(file1); System.out.println(file2); // 構造器2 File file3 = new File("G:\\tmp", "javaSenior"); System.out.println(file3); // 構造器3 File file4 = new File(file3, "hi.txt"); System.out.println(file4); } /* public string getAbsolutePath():獲取絕對路徑public string getPath():獲取路徑 public string getName():獲取名稱 public string getParent():獲取上層檔案目錄路徑。若無,返回null public Long length():獲取檔案長度(即:位元組數)。不能獲取目錄的長度。public long lastModified():獲取最後一次的修改時間,毫秒值 public string[ ] list():獲取指定目錄下的所有檔案或者檔案目錄的名稱陣列public File[] listFiles():獲取指定目錄下的所有檔案或者檔案目錄的File陣列 */ @Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new File("G:\\tmp\\hi.txt"); System.out.println(file1.getAbsoluteFile()); System.out.println(file1.getPath()); System.out.println(file1.getName()); System.out.println(file1.getParent()); System.out.println(file1.length()); System.out.println(file1.lastModified()); System.out.println(); System.out.println(file2.getAbsoluteFile()); 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("G:\\java_course"); String[] list = file.list(); for (String s : list) { System.out.println(s); } System.out.println(); File[] files = file.listFiles(); for (File f : files) { 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("G:\\tmp\\hi.txt"); boolean renameTo = file1.renameTo(file2); System.out.println(renameTo); } /* 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"); file1 = new File("hello1.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("G:\\tmp"); 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()); } @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("G:\\tmp\\io1"); boolean mkdir = file1.mkdir(); if (mkdir) { System.out.println("建立成功1"); } File file2 = new File("G:\\tmp\\io2"); boolean mkdir1 = file2.mkdir(); if (mkdir1) { System.out.println("建立成功2"); } } }