下面的代碼片段是由經(jīng)過驗(yàn)證的程序修改而來。觀察這些代碼片段你會(huì)發(fā)現(xiàn),跟以前的版本相比,在 Java7 里,文件相關(guān)的操作變得簡單的多了。通過使用新的Files 類里提供的各種方法,你可以只用一行代碼就能完成下列的文件操作:
創(chuàng)建文件
刪除文件
復(fù)制文件
文件移動(dòng)/改名
這篇文件是以你對(duì) Java7 里提供的新的Path類很熟悉為前提,如果你不熟悉這個(gè)類,這里就簡單說一句, Path 是文件系統(tǒng)里對(duì)位置的一個(gè)邏輯概念,例如 c:\ 和 ../foobar.txt 都是Path。
創(chuàng)建和刪除文件
下面的代碼片段向你展示的是用 Files.createFile (Path target) 方法創(chuàng)建文件的基本用法。
Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Path file = Files.createFile (target); 很多時(shí)候,出于安全的原因,你可能希望在創(chuàng)建的文件上設(shè)置一下屬性,例如:是否可讀/可寫/寫執(zhí)行。這些屬性依賴于文件系統(tǒng)的種類,你需要使用跟文件系統(tǒng)相應(yīng)的權(quán)限輔助類來完成這種操作。例如,PosixFilePermission和PosixFilePermissions 為 POSIX 文件系統(tǒng)設(shè)計(jì)的。下面的是在 POSIX 文件系統(tǒng)上的文件設(shè)置讀寫權(quán)限的用法。
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); 這個(gè) java.nio.file.attribute 包里提供了很多關(guān)于 FilePermission 的類。
警告 當(dāng)創(chuàng)建一個(gè)帶有權(quán)限屬性的文件時(shí),請(qǐng)注意包含這個(gè)文件的文件夾是否有權(quán)限的強(qiáng)制約束。例如,你會(huì)發(fā)現(xiàn),由于這些限制,盡管你給創(chuàng)建的文件指定了 rw-rw-rw 權(quán)限,實(shí)際創(chuàng)建的結(jié)果卻是 rw-r–r– 。
刪除文件更簡單,使用 Files.delete (Path) 這個(gè)方法。
Path target = Paths.get ("D:\\Backup\\MyStuff.txt"); Files.delete (target); 拷貝和移動(dòng)文件
下面的代碼向你展示的是使用 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); 經(jīng)常的,在拷貝文件的過程中你可能希望指定一些操作設(shè)置。在 Java7 里,你可以通過使用 StandardCopyOption enum 來設(shè)置這些屬性。下面看一個(gè)例子。
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); 拷貝操作時(shí)可以使用的屬性還包括COPY_ATTRIBUTES (保留文件屬性) 和 ATOMIC_MOVE (確保移動(dòng)事務(wù)操作的成功,否則進(jìn)行回滾)。
移動(dòng)文件的操作跟拷貝很相似,使用 Files.move (Path source, Path target) 方法。
同樣,你也可以指定移動(dòng)操作的屬性,使用 Files.move (Path source, Path target, CopyOptions...) 方法里的參數(shù)來設(shè)置。
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 非常便于使用。
本篇文章來源于 Linux公社網(wǎng)站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2011-10/46053.htm