1)操作文件 Path和Files是在JavaSE7中新添加進來的類,它們封裝了在用戶機器上處理文件系統所需的所有功能。Path表示的一個目錄名序列,其後還可以跟著一個文件名。路徑中的第一個參數可以是根路徑,以根路徑開始的路徑是絕對路徑,否則就是相對路徑。如果其路徑不是合法路徑則會拋出Invalid ...
1)操作文件
Path和Files是在JavaSE7中新添加進來的類,它們封裝了在用戶機器上處理文件系統所需的所有功能。Path表示的一個目錄名序列,其後還可以跟著一個文件名。路徑中的第一個參數可以是根路徑,以根路徑開始的路徑是絕對路徑,否則就是相對路徑。如果其路徑不是合法路徑則會拋出InvalidPathException異常。
絕對路徑:
Path path=Paths.get("G:\\", "temp","temp.txt");
相對路徑:
Path path2=Paths.get("temp", "temp.txt");
1.1組合或解析路徑是司空見慣的操作,調用p.resolve(q)將按照下列規則返回一個路徑:
A.如果q是絕對路徑,則結果就是q
B.否則根據文件系統的規則將p後面跟著q作為結果
例子:
Path p=Paths.get("G:\\", "temp"); Path q=Paths.get("temp.txt"); Path path=p.resolve(q); System.out.println(path); //結果:G:\temp\temp.txt p=Paths.get("G:\\"); q=Paths.get("H:\\","temp"); path=p.resolve(q); System.out.println(path); //結果:H:\temp
2)讀寫文件
Files類是普通文件操作變得快捷,但是比較適合處理中等長度的文件,如果要處理的文件長度比較大,或者二進位文件,那麼還是應該使用熟知的流(Stream)或者讀入器(Reader)/寫出器(Writer)。
Files的readAllBytes方法讀取文件返回位元組數,readAllLines返回一個String類型的列表,調用write方法寫入位元組組或者String類型的列表。
例子:
//位元組數組寫入文件內容 Path q=Paths.get("G:\\","temp.txt"); Files.write(q, "123123".getBytes("UTF-8")); //讀出位元組數組並列印出來 byte[]b=Files.readAllBytes(q); System.out.println(new String (b)); //字元串寫入文件內容 List<String>linesList=new ArrayList<String>(); linesList.add("11111111111111"); linesList.add("22222222222222"); linesList.add("33333333333333"); Files.write(q, linesList); //列印讀取的數據 List<String>lineStrings=Files.readAllLines(q); for (String itemString : lineStrings) { System.out.println(itemString); }
3)複製、移動和刪除文件
Files提供很方便複製、移動、刪除文件的方法,Files.copy(FromPaht,toPath),Files.move(fromPath,ToPath),Files.deleteIfExists(path),三個方法中可以增加一個StandardCopyOption枚舉參數(REPLACE_EXISTING,COPY_ATTRIBUTES,ATOMIC_MOVE)。
// 複製文件到指定路徑 Path path=Paths.get("G:\\", "temp.txt"); Path path2=Paths.get("H:\\","temp.txt"); Files.copy(path, path2, StandardCopyOption.REPLACE_EXISTING); // 移動文件到指定路徑(StandardCopyOption.ATOMIC_MOVE不允許跨磁碟移動文件,去掉其選項可以跨磁碟移動文件) Path path3=Paths.get("F:\\", "temp.txt"); Files.move(path2, path3, StandardCopyOption.ATOMIC_MOVE); // 刪除文件(最好使用deleteIfExists方法刪除文件,不建議使用delete方法刪除文件,因為若文件不存在報異常) boolean isDelete=Files.deleteIfExists(path3);
4)獲取文件信息
Files的一些靜態方法獲取文件的相關屬性,例如:exists(文件是否存在),isHidden(是否是隱藏文件),isReadable(是否可以讀),isWriteable(是否可寫),isExecutable(是否是可執行文件),isRegularFile(是否是普通文件),isDirectory(是否是目錄),isSymbolicLink(是否是符號鏈接)。當然readAttributes方法可以獲取更多的屬性例如最後訪問時間,修改時間等在此不舉例說明瞭。