Java中的File類

1.File類的靜態成員變量:java

1.static String pathSeparator 與系統有關的路徑分隔符,爲了方便,它被表示爲一個字符串。
2.static char pathSeparatorChar 與系統有關的路徑分隔符。
3.static String separator 與系統有關的默認名稱分隔符,爲了方便,它被表示爲一個字符串。
4.static char separatorChar 與系統有關的默認名稱分隔符。linux

複製代碼
import java.io.File;數組

public class FileDemo {
public static void main(String[] args) {ide

String s1 = File.pathSeparator;
    System.out.println(s1);//打印結果爲  ;  在linux中是:

    String s2 = File.separator;
    System.out.println(s2);//打印結果爲  \   若是是Linux系統則爲 /
}

}
複製代碼
2.File類的構造方法:測試

在同一個案例中演示這三個構造方法:code

複製代碼
import java.io.File;對象

public class FileDemo {
public static void main(String[] args) {繼承

String pathName = "e:\\java_code\\day22e\\hello.java";
    File f1 = new File(pathName);//將Test22文件封裝成File對象。注意;有能夠封裝不存在文件或者文件夾,變成對象。
    System.out.println(f1);

    File f2 = new File("e:\\java_code\\day22e","hello.java");
    System.out.println(f2);

    //將parent封裝成file對象。
    File dir = new File("e:\\java_code\\day22e");
    File f3 = new File(dir,"hello.java");
    System.out.println(f3);

}

} //輸出的都是e:\java_code\day22e\hello.java
複製代碼
3.java API中介紹的方法:(經常使用的標上了顏色)接口

boolean canExecute()測試應用程序是否能夠執行此抽象路徑名錶示的文件。
boolean canRead()測試應用程序是否能夠讀取此抽象路徑名錶示的文件。
boolean canWrite()測試應用程序是否能夠修改此抽象路徑名錶示的文件。
int compareTo(File pathname)按字母順序比較兩個抽象路徑名。
boolean createNewFile()當且僅當不存在具備此抽象路徑名指定名稱的文件時,不可分地建立一個新的空文件。
static File createTempFile(String prefix, String suffix)在默認臨時文件目錄中建立一個空文件,使用給定前綴和後綴生成其名稱。
static File createTempFile(String prefix, String suffix, File directory)在指定目錄中建立一個新的空文件,使用給定的前綴和後綴字符串生成其名稱。
boolean delete()刪除此抽象路徑名錶示的文件或目錄。//注意:這個刪除,不走回收站,直接刪除,因此要當心使用。
void deleteOnExit()在虛擬機終止時,請求刪除此抽象路徑名錶示的文件或目錄。
boolean equals(Object obj)測試此抽象路徑名與給定對象是否相等。
boolean exists()測試此抽象路徑名錶示的文件或目錄是否存在。
File getAbsoluteFile()返回此抽象路徑名的絕對路徑名形式。
String getAbsolutePath()返回此抽象路徑名的絕對路徑名字符串。
File getCanonicalFile()返回此抽象路徑名的規範形式。
String getCanonicalPath()返回此抽象路徑名的規範路徑名字符串。
long getFreeSpace()返回此抽象路徑名指定的分區中未分配的字節數。
String getName()返回由此抽象路徑名錶示的文件或目錄的名稱。
String getParent()返回此抽象路徑名父目錄的路徑名字符串;若是此路徑名沒有指定父目錄,則返回 null。
File getParentFile()返回此抽象路徑名父目錄的抽象路徑名;若是此路徑名沒有指定父目錄,則返回 null。
String getPath()將此抽象路徑名轉換爲一個路徑名字符串。
long getTotalSpace()返回此抽象路徑名指定的分區大小。
long getUsableSpace()返回此抽象路徑名指定的分區上可用於此虛擬機的字節數。
int hashCode()計算此抽象路徑名的哈希碼。
boolean isAbsolute()測試此抽象路徑名是否爲絕對路徑名。
boolean isDirectory()測試此抽象路徑名錶示的文件是不是一個目錄。
boolean isFile()測試此抽象路徑名錶示的文件是不是一個標準文件。
boolean isHidden()測試此抽象路徑名指定的文件是不是一個隱藏文件。
long lastModified()返回此抽象路徑名錶示的文件最後一次被修改的時間。
long length()返回由此抽象路徑名錶示的文件的長度。字節數
String[] list()返回一個字符串數組,這些字符串指定此抽象路徑名錶示的目錄中的文件和目錄。//遍歷目錄返回的只有名字
String[] list(FilenameFilter filter)返回一個字符串數組,這些字符串指定此抽象路徑名錶示的目錄中知足指定過濾器的文件和目錄。
File[] listFiles()返回一個抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中的文件。//返回路徑全名 推薦
File[] listFiles(FileFilter filter)返回抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中知足指定過濾器的文件和目錄。
File[] listFiles(FilenameFilter filter)返回抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中知足指定過濾器的文件和目錄。
static File[] listRoots()列出可用的文件系統根。
boolean mkdir()建立此抽象路徑名指定的目錄。調用該方法時,File對象必須對應一個路徑,而不是文件//只能建立一個目錄
boolean mkdirs()建立此抽象路徑名指定的目錄,包括全部必需但不存在的父目錄。//便可建立一個目錄,也可建立多及目錄,推薦
boolean renameTo(File dest)從新命名此抽象路徑名錶示的文件。
boolean setExecutable(boolean executable)設置此抽象路徑名全部者執行權限的一個便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly)設置此抽象路徑名的全部者或全部用戶的執行權限。
boolean setLastModified(long time)設置此抽象路徑名指定的文件或目錄的最後一次修改時間。
boolean setReadable(boolean readable)設置此抽象路徑名全部者讀權限的一個便捷方法。
boolean setReadable(boolean readable, boolean ownerOnly)設置此抽象路徑名的全部者或全部用戶的讀權限。
boolean setReadOnly()標記此抽象路徑名指定的文件或目錄,從而只能對其進行讀操做。
boolean setWritable(boolean writable)設置此抽象路徑名全部者寫權限的一個便捷方法。
boolean setWritable(boolean writable, boolean ownerOnly)設置此抽象路徑名的全部者或全部用戶的寫權限。
String toString()返回此抽象路徑名的路徑名字符串。
URI toURI()構造一個表示此抽象路徑名的 file: URI。
URL toURL()已過期。 此方法不會自動轉義 URL 中的非法字符。建議新的代碼使用如下方式將抽象路徑名轉換爲 URL:首先經過 toURI 方法將其轉換爲 URI,而後經過 URI.toURL 方法將 URI 裝換爲 URL。  
下面介紹幾個經常使用的方法:字符串

複製代碼
import java.io.File;

public class FileDemo {
public static void main(String[] args) {

//建立文件對象
            File file = new File("Test22.java");//建立文件對象,將其封裝成file類對象,就能夠調用file類的方法了

            String absPath1 = file.getAbsolutePath();//獲取文件的絕對路徑,即全路徑 返回的是String對象
            File absPath2 = file.getAbsoluteFile();//獲取文件的絕對路徑,即全路徑 返回的是File對象

            String path = file.getPath();//File中封裝的路徑是什麼獲取到的就是什麼。

            String filename = file.getName();//獲取文件名稱

            long size = file.length();//獲取文件大小

            System.out.println("absPath1="+absPath1);
            System.out.println("absPath2="+absPath2);
            System.out.println("path="+path);
            System.out.println("filename="+filename);
            System.out.println("size="+size);
}

}
複製代碼
複製代碼
import java.io.File;
import java.io.IOException;

public class FileDemo {
public static void main(String[] args) throws IOException {

File file = new File("d:\\file.java");
    boolean b = file.createNewFile();
    System.out.println(b);//輸出爲true,說明個人D盤下沒有file.java文件 ,他已經自動幫我建立了一個以下圖

}

}
複製代碼

listFiles()方法介紹

複製代碼
public class FileMethodDemo3 {
public static void main(String[] args) {
File dir = new File("e:\java_code");
//獲取的是目錄下的當前的文件以及文件夾的名稱。
String[] names = dir.list();
for(String name : names){
System.out.println(name);
}
//獲取目錄下當前文件以及文件對象,只要拿到了文件對象,那麼就能夠獲取其中想要的信息
File[] files = dir.listFiles();
for(File file : files){
System.out.println(file);
}
}
}
複製代碼
注意:在獲取指定目錄下的文件或者文件夾時必須知足下面兩個條件

1,指定的目錄必須是存在的,

2,指定的必須是目錄。不然容易引起返回數組爲null,出現NullPointerException

4.文件過濾器

l 測試類

複製代碼
public class FileDemo2 {
public static void main(String[] args) {
//獲取擴展名爲.java全部文件
//建立File對象
File file = new File("E:\code\day11_code");
//獲取指定擴展名的文件,因爲要對全部文件進行擴展名篩選,所以調用方法須要傳遞過濾器
File[] files = file.listFiles(new MyFileFilter());
//遍歷獲取到的全部符合條件的文件
for (File f : files) {
System.out.println(f);
}
}
}
複製代碼
l 自定類繼承FilenameFilter過濾器接口

//定義類實現文件名稱FilenameFilter過濾器
class MyFileFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
在查閱API時,咱們發現,在listFiles(FileFilter filter) 也能夠接受一個FileFilter過濾器,它和咱們講的FilenameFilter有啥區別呢?

FilenameFilter過濾器中的accept方法接受兩個參數,一個當前文件或文件夾所在的路徑,一個是當前文件或文件夾對象的名稱。

FileFilter 過濾器中的accept方法接受一個參數,這個參數就當前文件或文件夾對象

當咱們須要過濾文件名稱時就可使用FilenameFilter這個過濾器,當咱們想對當前文件或文件夾進行過濾,就可使用FileFilter ,好比須要當前目錄下的全部文件夾,就可使用FileFilter 過濾器。

l 測試類

複製代碼
public class FileDemo2 {
public static void main(String[] args) {
//獲取擴展名爲.java全部文件
//建立File對象
File file = new File("E:\code\day11_code");
//獲取指定目錄下的文件夾
File[] files = file.listFiles(new FileFileterByDir());
//遍歷獲取到的全部符合條件的文件
for (File f : files) {
System.out.println(f);
}
}
}
複製代碼
複製代碼
//自定義類繼承FileFilter過濾器接口

//文件過濾器class FileFileterByDir implements FileFilter{public boolean accept(File pathname) {return pathname.isDirectory();}}

相關文章
相關標籤/搜索