File的概述:
·File定義在java.io包下。
·一個File對象代表硬盤或網絡中可能存在的一個文件或者文件目錄(俗稱文件夾),與平臺無關。
·File能新建、刪除、重命名文件和目錄,但File不能訪問文件內容本身。如果需要訪問文件內容本身,則需要使用輸入輸出流。
? ? ·File對象可以作為參數傳遞給流的構造器。
·想要在Java程序中表示一個真實存在的文件或目錄,那么必須有一個File對象,但是Java程序中的一個File對象,可能沒有一個真實存在的文件或目錄。
·File的對象,通常是作為io流操作的文件的端點出現的。
File類的構造器
public File(String pathname):以pathname為路徑創建File對象,可以是絕對路徑或相對路徑,如果pathname是相對路徑,則默認的當前路徑在系統屬性user.dir中存儲。
public File(String parent,String child):以parent為父路徑,以child為子路徑創建File對象。(參數parent一定是一個文件目錄,參數child可以是一個文件,也可以是一個文件目錄。)
public File(File parent,String child):根據一個父File對象和子文件路徑創建File對象。(參數parent一定是一個文件目錄,不能是一個代表文件的File對象。參數child可以是一個文件,也可以是一個文件目錄。)
文件路徑的表示方式:
方式①:絕對路徑:以windows操作路徑為例,包括盤符在內的文件或文件目錄的完整路徑。
方式②:相對路徑:相對某一個文件目錄來講的相對的位置。
?? ?? ? ·在idea中,如果使用單元測試方法:相對與當前的module(模塊)來講。
?? ?? ? ·如果使用main方法:相對與當前的project(項目)來講。
常用方法:
①獲取文件和目錄基本信息:
public?String?getName( ):獲取名稱。
public?String?getPath( ):獲取路徑。
public?String?getAbsolutePath( ):獲取絕對路徑。
public?File?getAbsoluteFile( ):獲取絕對路徑表示的文件。
public?String?getParent( ):獲取上層文件目錄路徑。若無,返回null?
public?long?length():獲取文件長度(即:字節數)。不能獲取目錄的長度。
public?long?lastModified( ):獲取最后一次的修改時間,毫秒值。
②列出目錄的下一級:
public String[ ] list( ):返回一個String數組,表示該File目錄中的所有的子文件或目錄。
public File[ ] listFiles( ):返回一個File數組,表示該File目錄中的所有的子文件或目錄。
③File類的重命名功能:
public boolean renameTo(File dest):把文件重命名為指定的文件路徑。若file1.rename(file2),要求:file1必須存在,且file2必須不存在,且file2所在的文件目錄需要存在。
④判斷功能的方法:
public?boolean?exists( ):此File表示的文件或目錄是否實際存在。
public?boolean?isDirectory( ):此File表示的是否為目錄。
public?boolean?isFile( ):此File表示的是否為文件。
public?boolean?canRead( ):判斷是否可讀。
public?boolean?canWrite( ):判斷是否可寫。
public?boolean?isHidden( ):判斷是否隱藏。
⑤創建、刪除功能:
public?boolean?createNewFile( ):創建文件。若文件存在,則不創建,返回false。
public?boolean?mkdir( ):創建文件目錄。如果此文件目錄存在,就不創建了。如果此文件目錄的上層目錄不存在,也不創建。
public?boolean?mkdirs( ):創建文件目錄。如果上層文件目錄不存在,一并創建。
public?boolean?delete( ):刪除文件或者文件夾。
刪除注意事項:①Java中的刪除不走回收站。②要刪除一個文件目錄,請注意該文件目錄內不能包含文件或者文件目錄。
IO流原理以及流的分類:
Java IO 原理:
Java中,對于數據的輸入輸出操作以“流(stream)”的方式進行,可以看作是一種數據的流動。
I/O流中的I、O是Input和Output的縮寫,用于處理設備間的數據傳輸。如讀寫文件,網絡通訊等。
? ? ·輸入(Input):讀取外部數據(磁盤、光盤等的存儲設備的數據)到程序(內存)中。
? ? ·輸出(Output):將程序(內存)數據輸出到磁盤、光盤等存儲設備中。
流的分類:
java.io包下提供了各種“流”類和接口,用以獲取不同種類的數據,并通過標準的方式輸入或輸出數據。
按數據的流向不同分為:輸入流和輸出流。
?? ?? ? ·輸入流:把數據從其他設備上讀取到內存中的流。
?? ??? ??? ?? ? ·以InputStream、Reader結尾。
?? ??? ?·輸出流:把數據從內存中寫出到其他設備上的流。
?? ??? ??? ?? ? ·以OutputStream、Writer結尾。
按操作數據單位的不同分為:字節流(8bit)和字符流(16bit)。
?? ?? ? ·字節流:以字節為單位,讀寫數據的流。
?? ??? ??? ?? ? ·以InputStream、OutputStream結尾。
?? ?? ? ·字符流:以字符為單位,讀寫數據的流。
?? ??? ??? ?? ? ·以Reader、Writer結尾。
按IO流的角色不同分為:節點流和處理流。
?? ?? ? ·節點流:直接從數據源或目的地讀寫數據。
?? ?? ? ·處理流:不直接連接到數據源或目的地,而是“連接”在已存在的流(節點流或處理流)之上,通過對數據的處理為程序提供更為強大的讀寫功能。
基礎IO流的框架:
抽象基類:
(抽象基類) | 輸入流 | 輸出流 |
字節流 | InputStream | OutputStream |
字符流 | Reader | Writer |
四個節點流(文件流):
FileInputStream、FileOutputStream、FileReader、FileWriter