IO流(二)File類

轉載請註明出處:http://blog.csdn.net/github_39430101/article/details/77142235

File類

Java文件類以抽象的方式代表文件名和目錄路徑名。該類主要用於文件和目錄的創建、文件的查找和文件的刪除等。

常用構造方法

通過將給定路徑名字符串轉換爲抽象路徑名來創建一個新的File實例

File(String pathname)

常用方法

返回類型方法用法
booleancanExecute()測試應用程序是否可以執行此抽象路徑名錶示的文件。
booleancreateNewFile()當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件。
static FilecreateTempFile(String prefix,String suffix,File directory)在指定目錄中創建一個新的空文件,使用給定的前綴和後綴字符串生成其名稱。
booleandelete()刪除此抽象路徑名錶示的文件或目錄。
booleandeleteOnExit()在虛擬機終止時,請求刪除此抽象路徑名錶示的文件或目錄
booleanexists()測試此抽象路徑名錶示的文件或目錄是否存在。
FilegetAbsoluteFile()返回此抽象路徑名的絕對路徑名形式。
StringgetAbsolutePath()返回此抽象路徑名的絕對路徑名字符串。
StringgetName()返回由此抽象路徑名錶示的文件或目錄的名稱。
StringgetParent()返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null
StringgetPath()將此抽象路徑名轉換爲一個路徑名字符串。
booleanisDirectory()測試此抽象路徑名錶示的文件是否是一個目錄。
booleanisFile()測試此抽象路徑名錶示的文件是否是一個文件。
longlength()返回此抽象路徑名錶示的文件的長度
String[]list()返回一個字符串數組,這些字符串指定此抽象路徑名錶示的目錄中的文件和目錄。
longlength()返回此抽象路徑名錶示的文件的長度
File[]listFiles(FilenameFilter filter)返回抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中滿足指定過濾器的文件和目錄。

示例

創建文件

public class TestFile {
    public static void main(String[] args) throws IOException{
        File file = new File("D:/io/a.txt");
        if(!file.exists()){
           boolean flag = file.createNewFile();  //創建文件夾 file.mkdir()
           if(flag == true){
               System.out.println("文件創建成功");
           } else 
               System.out.println("文件創建失敗");
        }
    }
}

刪除文件

public class TestFile {
    public static void main(String[] args) throws IOException{
        File file = new File("D:/io/a.txt");
        if(file.exists()){
           boolean flag = file.delete();
           if(flag == true){
               System.out.println("文件刪除成功");
           } else 
               System.out.println("文件刪除失敗");
        }
    }
}

輸出一個目錄中的內容

public class TestFile {
    public static void main(String[] args) throws IOException{
        File file = new File("D:/io/");
        File[] subs = file.listFiles();
        for(File a :subs){
            System.out.println(a);
        }
    }
}

輸出一個目錄下所有擴展名爲txt的文件

public class TestFile {
    public static void main(String[] args) throws IOException{
       File dir = new File("D:/io/");
       File[] subs = dir.listFiles(new FileFilter(){ 
         public boolean accept(File file){
             return file.getName().endsWith(".txt");
         }  
       });
       for(File sub: subs){
           System.out.println(sub);
       }
    }
}

如何遍歷目錄中所有的文件

public class TestFile {
    public static void main(String[] args) throws IOException{
        File file = new File("D:/io/");
        fileList(file);
    }
    public static void fileList(File file){
       if(file.isFile()){
           System.out.println("文件名:"+file.getName());
       } else if(file.isDirectory()){
           System.out.println("文件夾目錄是:"+file.getName());
           File[] f = file.listFiles();
           for(File s : f){
               fileList(s);
           }
       }
    }
}

RandomAccessFile
RandomAccessFile適用於由大小已知的記錄組成的文件,所以我們可以使用seek()將記錄從一處轉移到另一處,然後讀取或者修改記錄。RandomAccessFile不是InputStream或者OutputStream繼承層次結構中的一部分。從本質上來說,RandomAccessFile的工作方式類似於把DataInputStream和DataOutputStream組合起來使用,還添加了一些方法。其中方法getFilePointer()用於查找當前所處的文件位置。
使用RandomAccessFile類的write(byte[])方法向文件寫數據

public class TestFile {
    public static void main(String[] args) throws IOException{
        RandomAccessFile raf = new RandomAccessFile("D:/io/raf.txt","rw");
        byte[] buf = "HelloWorld".getBytes();
        raf.write(buf);
        raf.close();
    }
}

使用RandomAccessFile類的read(byte[])方法從文件讀取數據

public class TestFile {
    public static void main(String[] args) throws IOException{
        RandomAccessFile raf = new RandomAccessFile("D:/io/raf.txt","r");
        //創建長度爲10的字節數組
        byte[] b = new byte[10];
        int len = raf.read(b);
        System.out.println("讀取到了:"+len+"個字節");
        System.out.println(new String(b));
        raf.close();
    }
}
發佈了35 篇原創文章 · 獲贊 30 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章