1. 程式人生 > >JDK8原始碼閱讀筆記--------java.io.File

JDK8原始碼閱讀筆記--------java.io.File

public static void main(final String[] args) throws IOException {
        //例項化一個File類,File類的構造器一共有4種,具體見API.
        //路徑名字自己找一個合適的就好
        File file = new File("G:\\Users\\Administrator\\workspace\\test\\src\\com\\hello2.java");
        File file1 = new File("G:\\Users\\Administrator\\workspace\\test\\src\\com\\hello.java");

        //輸出檔案的目錄,相當於file.toString().
        System.out.println(file);

        //表示兩個目錄之間的分隔符,跟作業系統有關.
        System.out.println(File.pathSeparator);

        //表示一個目錄中的分隔符,同樣跟作業系統有關.
        System.out.println(File.separator);

        //表示檔案是否可執行.
        System.out.println(file.canExecute());

        //表示檔案是否可讀.
        System.out.println(file.canRead());

        //表示檔案是否可寫.
        System.out.println(file.canWrite());

        //用來比較兩個檔案(目錄)的路徑是否一致,返回0為一致.
        System.out.println(file.compareTo(file1));

        //建立檔案,返回值為boolean型別
        file.createNewFile();

        //刪除檔案,返回值為boolean型別
        file.delete();

        //驗證檔案是否存在.
        System.out.println(file.exists());

        //返回檔案的與構造器引數有關的絕對路徑(字串).
        System.out.println(file.getAbsolutePath());

        //返回檔案的與構造器引數有關的絕對路徑(File型別)
        System.out.println(file.getAbsoluteFile());

        //返回檔案的全路徑(字串).
        System.out.println(file.getCanonicalPath());

        //返回檔案的全路徑(File型別)
        System.out.println(file.getCanonicalFile());

        //返回抽象路徑名所指定的分割槽中未分配的位元組數.
        System.out.println(file.getFreeSpace());

        //返回特指的檔名.
        System.out.println(file.getName());

        //返回上一層目錄(父目錄).
        System.out.println(file.getParent());

        //原理與上面那個大致相同
        System.out.println(file.getParentFile());

        //返回所在分割槽的總大小
        System.out.println(file.getTotalSpace());

        //返回此抽象路徑名指定的分割槽上可用於此虛擬機器的位元組數。
        System.out.println(file.getUsableSpace());

        //判斷路徑是否為絕對路徑
        System.out.println(file.isAbsolute());

        //判斷所指檔案是否為目錄
        System.out.println(file.isDirectory());

        //判斷所指檔案是否為標準檔案.
        System.out.println(file.isFile());

        //判斷檔案是否為隱藏檔案
        System.out.println(file.isHidden());

        //返回檔案上一次被修改時間.不是標準的日期格式.
        System.out.println(file.lastModified());

        //返回檔案的長度
        System.out.println(file.length());

        //超重要!!!!返回指定 "目錄" 下所有的檔案和目錄(不遍歷)
        System.out.println(Arrays.toString(file.list()));

        //超級超級超級重要!!!!!返回指定"目錄"下所有有特定形式的檔案!!!!!!
        System.out.println(Arrays.toString(file.list(new FilenameFilter() {
            String suffix = ".java";

            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(suffix);
            }
        })));

        //以下兩個同以上兩個差不多,區別還是返回型別是String還是File的問題
        //這裡舉的例子是"返回所有檔案屬性是標準檔案".還是蠻吊.
        //還有一個小區別:以上兩個list引數沒有FileFilter型別(見API)
        //也就是說按照目標是檔案還是目錄返回的只能用listFiles()方法(不是按照副檔名)
        System.out.println(Arrays.toString(file.listFiles()));
        System.out.println(Arrays.toString(file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile();
            }
        })));

        //listRoots()是個靜態方法,用類名直接呼叫,返回的是計算機對應系統的所有根路徑.
        System.out.println(Arrays.toString(File.listRoots()));

        //createNewFile()建立的是檔案,而下面的mkdir()建立的是目錄.
        //mkdirs()是連帶建立所有路徑中不存在的包
        System.out.println(file.mkdir());

        //重新命名指定檔案
        System.out.println(file.renameTo(new File("G:\\Users\\Administrator\\workspace\\test\\src\\com\\hello21.java")));

        //好像不是很可靠的設定檔案執行許可權的命令
        System.out.println(file.setExecutable(false));
        System.out.println(file.canExecute());

        //同樣十分蹩腳的修改最後修改時間的函式
        System.out.println(file1.lastModified());
        System.out.println(file1.setLastModified(1487329625258L));

        //最後的幾個設定可讀可寫什麼的函式就不寫了

        //這裡!相當!十分!非常!特別!極其重要的函式!!!把檔案路徑轉換成URL地址!!
        //非常注意!!!轉換用的類是"URI"而不是"URL"!!!這是因為URL類不會處理應該被轉義的字元
        //具體見百度
        URI url = file.toURI();
        System.out.println(url);
    }