下面的代碼片段是由經過驗證的程序修改而來
觀察這些代碼片段你會發現
跟以前的版本相比
在Java
裡
文件相關的操作變得簡單的多了
通過使用新的Files類裡提供的各種方法
你可以只用一行代碼就能完成下列的文件操作
?創建文件
?刪除文件
?復制文件
?文件移動/改名
這篇文件是以你對Java
裡提供的新的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)
拷貝和移動文件
下面的代碼向你展示的是使用py (Path source
Path target)方法做文件拷貝的基本用法
Path source = Paths
get (
C:\\My Documents\\Stuff
txt
)
Path target = Paths
get (
D:\\Backup\\MyStuff
txt
)
py (source
target)
經常的
在拷貝文件的過程中你可能希望指定一些操作設置
在Java
裡
你可以通過使用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
)
py (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
API 非常便於使用
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26762.html