1. 程式人生 > >File和IO流

File和IO流

exception input 標準 相等 writer 外部 包括 方向 常用方法

File類

  java.io.File類:代表硬盤上的一個文件或目錄

File類的構造方法:

  File類沒有無參構造方法,所有構造方法都有參數

  File(String pathname):通過指定的絕對路徑創建一個File實例

  File(String parent,String child):通過parent路徑名字符串和child路徑名字符串創建一個File實例

  File(File parent,String child):根據parent抽象路徑名和child路徑名字符串創建一個File實例

File類的常用方法:

  boolean exists():測試此路徑名表示的文件或目錄是否存在,如果存在返回true,否則返回false。

  boolean isFile():測試此路徑名表示的文件是否是一個標準文件。

  boolean isDicrectory():測試此路徑名表示的文件是否是一個目錄。

  boolean createNewFile():當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件,創建成功返回true,否則返回false。

  boolean mkdir():創建此抽象路徑名指定的目錄。

  boolean mkdirs():創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。

  boolean delete():刪除此抽象路徑名指定的文件或目錄。

  boolean equals(Object obj):測試此抽象路徑名與給定對象是否相等。

  String getPath(): 將此抽象路徑名轉換為一個路徑名字符串。

  String getAbsolutePath():返回此抽象路徑名的絕對路徑名字符串。

  String getName():返回由此抽象路徑名表示的文件或目錄的名稱。

  String[] list():返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。

常用方法示例:

 1 public class TestFile1 {
 2     public static void main(String[] args) throws IOException {
 3         File f1 = new
File("helloworld.txt"); 4 f1.createNewFile();//創建新文件 5 System.out.println(f1.isFile());//判斷是否是文件 6 System.out.println(f1.getAbsolutePath());//得到文件絕對路徑 7 System.out.println(f1.getPath());//得到文件的相對路徑 8 System.out.println(f1.getName());//得到文件名 9 System.out.println(f1.getParent());// 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。 10 File f2 = new File("hello/world/java"); 11 f2.mkdirs();//創建目錄 12 String[] liStrings = f2.list(); 13 for(int i = 0;i<liStrings.length;i++) { 14   System.out.println(liStrings[i]); 15 } 16 System.out.println(f2.isDirectory());//判斷是否是目錄 17 f1.delete();//刪除文件 18 System.out.println(f1.exists());//判斷文件是否存在 19 } 20 }

I/O流

IO流體系圖:

技術分享圖片

  註意:IO流都是成對的,每個輸入流都有其對應的輸出流

IO流的分類:

  按照數據流的方向:輸入流,輸出流

  按照處理數據的單位:字符流,字節流

  按照實現的功能:節點流,和處理流

 輸入流:InputStream,Reader,及其相關子類

 輸出流:OutputStream,Writer,及其相關子類

  註意:判斷一個流是輸入流還是輸出流,是相對程序代碼而言的。數據從外部文件流向程序代碼就是輸入流,從代碼流向外部文件就是輸出流。

字節流:二進制格式(只要確定不是純文本格式),InputStrem,OutputStrem及其所有帶有Stream子類

字符流:純文本格式(比如英文/漢字/或其他編碼文字)Reader,Writer及其相關子類

節點流:對文件操作的字符流有FileReader/FileWriter,字節流有FileInputStream/FileOutStream

處理流:

  • 緩沖流:緩沖流要“套接”在相應的節點流之上,對讀寫的數據提供了緩沖的功能,提高了讀寫效率,同時增加了一些新的方法。
    • 字節緩沖流有BufferedInputStream/BufferedOutputStream,字符緩沖流有BufferedReader/BufferedWriter,字符緩沖流分別提供了讀取和寫入一行的方法ReadLine和WriteLine方法。
    • 對於輸出的緩沖流,寫出的數據,會先寫入到內存中,再使用flush方法將內存中的數據刷到硬盤。所以,在使用字符緩沖流的時候,一定要先flush,然後再close,避免數據丟失。
  • 轉換流:用於字節數據到字符數據之間的轉換。
    • 字符流InputStreamReader/OutputStreamWriter。其中,InputStreamReader需要與InputStream“套接”,OutputStreamWriter需要與OutputStream“套接”。
  • 數據流:提供了讀寫Java中的基本數據類型的功能。
    • DataInputStream和DataOutputStream分別繼承自InputStream和OutputStream,需要“套接”在InputStream和OutputStream類型的節點流之上。
  • 對象流:用於直接將對象寫入寫出。(用於對象序列化和反序列化)
    • 流類有ObjectInputStream和ObjectOutputStream,本身這兩個方法沒什麽,但是其要寫出的對象有要求,該對象必須實現Serializable接口,來聲明其是可以序列化的。否則,不能用對象流讀寫。

  

技術分享圖片

File和IO流