1. 程式人生 > >File類/方法詳解

File類/方法詳解

java.io.File類

  • 1.凡是與輸入、輸出相關的類、介面等都定義在java.io包下
  • 2.File是一個類,可以有構造器建立其物件。此物件對應著一個檔案(.txt .avi .doc .ppt .mp3 .jpg)或檔案目錄
  • 3.File類物件是與平臺無關的。
  • 4.File中的方法,僅涉及到如何建立、刪除、重新命名等等。只要涉及檔案內容的,File是無能為力的,必須由io流來完成。
  • 5.File類的物件常作為io流的具體類的構造器的形參。
  • 6.File的靜態屬性String separator儲存了當前系統的路徑分隔符。在unix中,此欄位為/ ,在windows中,為\\

File類的建構函式有以下幾種:


 1File(String pathname) 

 2File(String parent, String child) 

 3File(File parent, String child)

 4File(URI uri) 

構造的File類物件表示一個路徑,指向我們的目標檔案或資料夾。

即,如果目標檔案不存在,並不會建立物理目標檔案!

File path = new File(".");  表示當前目錄。

File path = new File("E:\\Java"); 表示Windows下的E盤裡的Java檔案(或者是資料夾),注意要用雙斜線\\。

File
path = new File(new File("."),"bin"); 表示當前資料夾下的bin檔案(資料夾),如果沒有bin就會丟擲NullPointerException異常。

建立檔案、或者資料夾裡檔案物件

主要方法如下:
createNewFile()–建立新檔案物件
delete()
mkDir():建立一個檔案目錄。只有在上層檔案目錄存在的情況下,才能返回true
mkDirs():建立一個檔案目錄。若上層檔案目錄不存在,一併建立。
list()–獲取資料夾裡面的檔名字

Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname.

listFiles()–獲取資料夾裡面的檔案物件

    @Test
    public void test3() throws IOException{
        File file1 = new File("d:/io/helloworld.txt");
        System.out.println(file1.delete());

        if(!file1.exists()){
            boolean b = file1.createNewFile();
            System.out.println(b);
        }

        File file2 = new File("d:\\io1\\io2");
        if(!file2.exists()){
            boolean b = file2.mkdirs();
            System.out.println(b);
        }

        File file3 = new File("d:\\teach");
        String[] strs = file3.list();
        for(int i = 0;i < strs.length;i++){
            System.out.println(strs[i]);
        }

        System.out.println();

        File[] files = file3.listFiles();
        for(int i = 0;i < files.length;i++){
            System.out.println(files[i].getName());
        }
    }

判斷是否存在、讀寫以及路徑或者File

主要方法如下:
exists()–是否存在
canWrite()
canRead()
isFile()–判斷是否為File
isDirectory()–判斷是否路徑
lastModified()–最後一次修改時間
length()–位元組大小

    @Test
    public void test2(){
        File file1 = new File("d:/io/helloworld.txt");
        File file2 = new File("d:\\io\\io1");

        System.out.println(file1.exists());
        System.out.println(file1.canWrite());
        System.out.println(file1.canRead());
        System.out.println(file1.isFile());
        System.out.println(file1.isDirectory());
        System.out.println(new Date(file1.lastModified()));
        System.out.println(file1.length());

        System.out.println();

        System.out.println(file2.exists());
        System.out.println(file2.canWrite());
        System.out.println(file2.canRead());
        System.out.println(file2.isFile());
        System.out.println(file2.isDirectory());
        System.out.println(new Date(file2.lastModified()));
        System.out.println(file2.length());

    }

result as follows :

true
true
true
true
false
Mon Dec 05 16:45:11 CST 2016
0

true
true
true
false
true
Mon Dec 05 16:35:32 CST 2016
0

獲取檔案路徑或者檔名字,相對或者絕對,父級檔案物件,重新命名檔案

主要方法如下:

路徑:

絕對路徑:包括碟符在內的完整的檔案路徑
相對路徑:在當前檔案目錄下的檔案的路徑

getName()
getPath()
getAbsoluteFile()–得到的為File
getAbsolutePath()–得到的為String
getParent()
renameTo(File newName)

    @Test
    public void test1(){
        //表示在專案名目錄下
        File file1 = new File("1.jpg");
        File file2 = new File("hello1.txt");

        File file3 = new File("d:\\io\\io1");
        File file4 = new File("d:\\io2");

        System.out.println(file1.getName());
        System.out.println(file1.getPath());
        System.out.println(file1.getAbsoluteFile().getClass());
        System.out.println(file1.getParent());
        System.out.println(file1.getAbsolutePath().getClass());

        System.out.println();

        System.out.println(file3.getName());
        System.out.println(file3.getPath());
        System.out.println(file3.getAbsoluteFile());
        System.out.println(file3.getParent());
        System.out.println(file3.getAbsolutePath());

        //renameTo(File newName):重新命名
        //file1.renameTo(file2):file1重新命名為file2.要求:file1檔案一定存在,file2一定不存在
//      boolean b = file1.renameTo(file2);
//      System.out.println(b);
//      
//      boolean b1 = file4.renameTo(file3);
//      System.out.println(b1);
    }
}

result as follows :

1.jpg
1.jpg
class java.io.File
null
class java.lang.String

io1
d:\io\io1
d:\io\io1
d:\io
d:\io\io1