Java基礎系列(15)- IO流
阿新 • • 發佈:2022-01-29
File類的使用
File類的例項化
java.io.File
類:檔案和檔案目錄路徑的抽象表示形式,與平臺無關- File 能新建、刪除、重新命名檔案和目錄,但File 不能訪問檔案內容本身。如果需要訪問檔案內容本身,則需要使用輸入/輸出流。
- 想要在Java程式中表示一個真實存在的檔案或目錄,那麼必須有一個File物件,但是Java程式中的一個File物件,可能沒有一個真實存在的檔案或目錄。
- File物件可以作為引數傳遞給流的構造器
import org.junit.Test; import java.io.File; /** * File類的使用 * * 1. File類的一個物件,代表一個檔案或一個檔案目錄(俗稱:資料夾) * 2. File類宣告在java.io包下 * */ public class FileTest { /** * 1.如何建立file類的例項 * File(String filePath):以filePath為路徑建立File物件,可以是絕對路徑或者相對路徑 * File(String parentPath,String childPath):以parentPath為父路徑,childPath為子路徑建立File物件。 * File(File parentFile,String childPath):根據一個父File物件和子檔案路徑建立File物件 * 2. * 相對路徑:相較於某個路徑下,指明的路徑。 * 絕對路徑:包含碟符在內的檔案或檔案目錄的路徑 * * 3.路徑分隔符 * windows:\\ * unix:/ * 4.Java程式支援跨平臺執行,因此路徑分隔符要慎用。 * * 5.為了解決這個隱患,File類提供了一個常量: * public static final String separator。 * 根據作業系統,動態的提供分隔符。 * * File file1= new File("d:\\Work\\info.txt"); * File file2= new File("d:"+ File.separator+ "Work"+ File.separator+ "info.txt"); * File file3= new File("d:/Work"); * */ @Test public void test(){ //構造器1: File file1 = new File("hello.txt");//相對於當前module File file2 = new File("F:\\java\\Work2\\JavaSenior\\day08\\num.txt"); System.out.println(file1); //hello.txt System.out.println(file2); //F:\java\Work2\JavaSenior\day08\num.txt //構造器2: File file3 = new File("D:\\workspace_idea1","JavaSenior"); System.out.println(file3); //D:\workspace_idea1\JavaSenior //構造器3: File file4 = new File(file3,"hi.txt"); System.out.println(file4); //D:\workspace_idea1\JavaSenior\hi.txt } }
File類的常用方法
import org.junit.Test; import java.io.File; import java.util.Date; /** * File類的使用 * * 1. File類的一個物件,代表一個檔案或一個檔案目錄(俗稱:資料夾) * 2. File類宣告在java.io包下 */ public class FileTest { /** * 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 file = new File("Hello.txt"); //此路徑不存在 File file2 = new File("E:\\code\\java\\first\\day3\\src\\test\\hello1.txt"); //存在一個空檔案 System.out.println(file.getAbsolutePath());//E:\code\java\first\day3\Hello.txt System.out.println(file.getPath()); //Hello.txt System.out.println(file.getName()); //Hello.txt System.out.println(file.getParent()); //null System.out.println(file.length()); //0 System.out.println(file.lastModified()); //0 System.out.println(new Date(file.lastModified())); //Thu Jan 01 08:00:00 CST 1970 System.out.println(); System.out.println(file2.getAbsolutePath()); //E:\code\java\first\day3\src\test\hello1.txt System.out.println(file2.getPath()); //E:\code\java\first\day3\src\test\hello1.txt System.out.println(file2.getName()); //hello1.txt System.out.println(file2.getParent()); //E:\code\java\first\day3\src\test System.out.println(file2.length()); //0 System.out.println(file2.lastModified()); //1643424633719 } @Test public void test3(){ //檔案需存在!!!,不然 java.lang.NullPointerException File file = new File("E:\\code\\java\\first"); 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); //相當於呼叫toString方法 } } /** * File類的重新命名功能 * * 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:\\book\\num.txt"); boolean renameTo = file2.renameTo(file1); System.out.println(renameTo); } }