天天看點

在Java 7裡如何對檔案進行操作

導讀:本文是從《Manipulating Files in Java 7》這篇文章翻譯而來。 文章内容如下:

下面的代碼片段是由經過驗證的程式修改而來。觀察這些代碼片段你會發現,跟以前的版本相比,在Java7裡,檔案相關的操作變得簡單的多了。通過使用新的Files類裡提供的各種方法,你可以隻用一行代碼就能完成下列的檔案操作:

  • 建立檔案
  • 删除檔案
  • 複制檔案
  • 檔案移動/改名

這篇檔案是以你對Java7裡提供的新的Path類很熟悉為前提,如果你不熟悉這個類,這裡就簡單說一句,Path是檔案系統裡對位置的一個邏輯概念,例如c:\ 和../foobar.txt都是Path。

建立和删除檔案

下面的代碼片段向你展示的是用 Files.createFile (Path target) 方法建立檔案的基本用法。

  1. Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Path file = Files.createFile (target);  

很多時候,出于安全的原因,你可能希望在建立的檔案上設定一下屬性,例如:是否可讀/可寫/寫執行。這些屬性依賴于檔案系統的種類,你需要使用跟檔案系統相應的權限輔助類來完成這種操作。例如,PosixFilePermission和PosixFilePermissions為POSIX檔案系統設計的。下面的是在POSIX檔案系統上的檔案設定讀寫權限的用法。

  1. Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Set<PosixFilePermission> perms  =   
  2. PosixFilePermissions.fromString ("rw-rw-rw-"); FileAttribute<Set<PosixFilePermission>> attr  =   
  3. PosixFilePermissions.asFileAttribute (perms); Files.createFile (target, attr);  

這個java.nio.file.attribute包裡提供了很多關于FilePermission的類。

警告當建立一個帶有權限屬性的檔案時,請注意包含這個檔案的檔案夾是否有權限的強制限制。例如,你會發現,由于這些限制,盡管你給建立的檔案指定了rw-rw-rw權限,實際建立的結果卻是rw-r–r–。

删除檔案更簡單,使用Files.delete (Path)這個方法。

  1. Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Files.delete (target);  

拷貝和移動檔案

下面的代碼向你展示的是使用Files.copy (Path source, Path target)方法做檔案拷貝的基本用法。

  1. Path source = Paths.get ("C:\\My Documents\\Stuff.txt");  
  2. Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Files.copy (source, target);  

經常的,在拷貝檔案的過程中你可能希望指定一些操作設定。在Java7裡,你可以通過使用StandardCopyOption enum來設定這些屬性。下面看一個例子。

  1. import static java.nio.file.StandardCopyOption.*;  
  2. Path source = Paths.get ("C:\\My Documents\\Stuff.txt");  
  3. Path target = Paths.get ("D:\\Backup\\MyStuff.txt");  
  4. Files.copy (source, target, REPLACE_EXISTING);  

拷貝操作時可以使用的屬性還包括COPY_ATTRIBUTES (保留檔案屬性) 和ATOMIC_MOVE (確定移動事務操作的成功,否則進行復原)。

移動檔案的操作跟拷貝很相似,使用Files.move (Path source, Path target)方法。

同樣,你也可以指定移動操作的屬性,使用Files.move (Path source, Path target, CopyOptions...) 方法裡的參數來設定。

  1. import static java.nio.file.StandardCopyOption.*;  
  2. Path source = Paths.get ("C:\\My Documents\\Stuff.txt");  
  3. Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Files.move (source, target, REPLACE_EXISTING,   
  4. COPY_ATTRIBUTES);  

可以看出,新的用于檔案操作的NIO.2 API 非常便于使用。

文章出自:外刊IT評論

(責任編輯:夏夢竹)

轉載于:https://www.cnblogs.com/mixer/archive/2011/10/27/2448659.html