• 在Java 7 中如何對文件進行操作

    2
    Java C/C++ Go 8820 次瀏覽

      本文是從 Manipulating Files in Java 7 這篇文章翻譯而來。

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

    • 創建文件
    • 刪除文件
    • 復制文件
    • 文件移動/改名

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

      創建和刪除文件

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

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

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

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

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

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

      刪除文件更簡單,使用 Files.delete (Path) 這個方法。

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

      拷貝和移動文件

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

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

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

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

      拷貝操作時可以使用的屬性還包括COPY_ATTRIBUTES (保留文件屬性) 和 ATOMIC_MOVE (確保移動事務操作的成功,否則進行回滾)。

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

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

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

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



    來自: 外刊IT評論

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色