JDK8原始碼閱讀筆記--------java.io.File
阿新 • • 發佈:2019-01-10
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); }