JavaIO詳解--JavaIO的整體結構以及File類的使用

一、概述

IO即輸入輸出系統,java的IO總體可以分爲字符流(Reader、Writer)和字節流(InputStream、OutputStream)。

字節流直接對二進制數據進行操作;字符流在操作的時候使用了緩衝區(即內存)。

字節流一般用來對媒體文件操作,比如圖片;字符流一般可用來操作文本文件,如txt文件。

掌握javaIO需要掌握一個類(File)、一個接口(Serializable)和四個抽象類(Reader、Writer、InputStream、OutputStream)

二、JavaIO的整體結構

三、File類

File類是在整個java.io包中裏面唯一一個與文件本身有關的操作類,通過查看官方文檔Java PlatForm SE 8,可以看到File類一共提供了四種構造方法:

File(File parent, String child) 
File(String pathname)  
File(String parent, String child)  
File(URI uri) 

上面四種構造方法包含了所有可能出現的路徑格式

3.1、FIle類對文件的主要操作:

File類對文件的主要操作是以下幾個:

boolean createNewFile()  創建文件
boolean delete()  刪除文件
boolean exists()  判斷文件是否存在

通過代碼簡單嘗試:

public static void main(String[] args) throws IOException {
    File file=new File("F://testFile.txt");
    if (file.exists()){
        file.delete();
    }else {
        file.createNewFile();
    }
}

注意兩個問題:

1.刪除和新建文件是存在延遲的,並非事實。

2.不同的操作系統之間路徑分隔符不同,因此可以使用File.separator代替分隔符

File file=new File("F:"+File.separator+"testFile.txt");

3.2、File類對目錄的主要操作

boolean mkdir() 創建單級目錄
boolean mkdirs() 創建多級目錄  
String getParent() 以String方式獲取父目錄
File getParentFile()  以File方式獲取父目錄

當我們需要創建一個包含多級目錄的文件時,就可以使用上述的方法

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator+"二級目錄"+File.separator+"testFile.txt");
    if (!file.getParentFile().exists()){
        file.getParentFile().mkdirs();
    }
    file.createNewFile();
}

3.3、對文件信息的操作

File類提供了許多對文件信息的操作:

boolean canExecute() 判斷文件是否可執行
boolean canRead()  判斷文件是否可讀
boolean canWrite()  判斷文件是否可寫
String getAbsolutePath()  獲取文件絕對路徑
String getName() 獲取文件或目錄的名稱
boolean isDirectory() 判斷是否是目錄
boolean isFile()  判斷是否是文件
long lastModified()  最後修改時間
long length()   文件的大小

3.4、獲取文件目錄信息

String[] list()  返回所有子目錄的信息
File[] listFiles()  返回完整的路徑信息

通過代碼和結果展示:

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator);
    System.out.println(Arrays.toString(file.list()));
    System.out.println(Arrays.toString(file.listFiles()));
}

結果如下:

通過遞歸的方式,我們可以找到某個路徑下的所有完整地址

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator);
    listDIR(file);
}
public static void listDIR(File file){
    if (file.isDirectory()){
        File[] result=file.listFiles();
        if (result!=null){
            for (int i = 0; i < result.length; i++) {
                listDIR(result[i]);
            }
        }
        System.out.println(file);
    }
}

運行結果:

四、結論

File類的操作只針對於文件的信息,無法對文件中的內容進行操作,而想要操作文件的內容就需要使用字節流和字符流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章