SwiftFilePath 0.0.6

SwiftFilePath 0.0.6

测试测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2015年10月
SPM支持 SPM

坂本二博维护。



  • 坂本二博

SwiftFilePath

对NSFileManager的简单而强大的封装。

使用方法

创建实例

您可以从字符串创建Path对象。

let fooDir = Path("/path/to/fooDir")

// You can re obtain String by calling toString.
fooDir.toString() // "/path/to/fooDir"

通过工厂方法从应用程序获取可访问的Path

Path.homeDir.toString()
// "/var/mobile/Containers/Data/Application/<UUID>"

Path.documentsDir.toString()
// "/var/mobile/Containers/Data/Application/<UUID>/Documents"

Path.cacheDir.toString()
// "var/mobile/Containers/Data/Application/<UUID>/Library/Caches"

Path.temporaryDir.toString()
// "var/mobile/Containers/Data/Application/<UUID>/Library/tmp"

访问其他目录和文件

//  Get Path that indicate foo.txt file in Documents dir
let textFilePath = Path.documentsDir["foo.txt"]
textFilePath.toString() //  "~/Documents/foo.txt"

//  You can access subdir.
let jsonFilePath = Path.documentsDir["subdir"]["bar.json"]
jsonFilePath.toString() //  "~/Documents/subdir/bar.json"

// Access to parent Path.
jsonFilePath.parent.toString() // "~/Documents/subdir"
jsonFilePath.parent.parent.toString() // "~/Documents"
jsonFilePath.parent.parent.parent.toString() // "~/"
let contents = Path.homeDir.contents!
//  Get dir contents as Path object.
// [
//    Path<~/.com.apple.mobile_container_manager.metadata.plist>, 
//    Path<~/Documents>,
//    Path<~/Library>, 
//    Path<~/tmp>,
// ]

// Or you can use dir as iterator
for content:Path in Path.homeDir { 
    println(content) 
 }

访问文件信息

检查路径是否是目录。

Path.homeDir.isDir // true
Path.homeDir["hoge.txt"].isDir //false

检查路径是否存在。

// homeDir is exists
Path.homeDir.exists // true

// Is there foo.txt in homeDir ?
Path.homeDir["foo.txt"].exists

// Is there foo.txt in myDir ?
Path.homedir["myDir"]["bar.txt"].exists

您可以获取文件的基名。

Path.homedir["myDir"]["bar.txt"].basename // bar.txt

您可以获取文件的扩展名。

//  Get all *json files in Documents dir.
let allFiles  = Path.documentsDir.contents!
let jsonFiles = allFiles.filter({$0.ext == "json" })

您可以获取更多文件属性。

let jsonFile = Path.documentsDir["foo.json"]
jsonFile.attributes!.fileCreationDate()! // 2015-01-11 11:30:11 +0000
jsonFile.attributes!.fileModificationDate()! // 2015-01-11 11:30:11 +0000
jsonFile.attributes!.fileSize() // 2341

文件操作

创建(或删除)目录和文件。

// Create "foo" dir in Documents.
let fooDir = Path.documentsDir["foo"]
fooDir.mkdir()

//  Create empty file "hoge.txt" in "foo" dir.
let hogeFile = fooDir["hoge.txt"]
hogeFile.touch()

// Delete foo dir
fooDir.remove()

复制(或移动)文件。

let fooFile = Path.documentsDir["foo.txt"]
let destination = Path.tmpDir["foo.txt"]
fooFile.copyTo( destination )

写入(或读取)字符串数据。

// Write string.
let textFile = Path.documentsDir["hello.txt"]
textFile.writeString("HelloSwift")

// Read string.
let text = textFile.readString()! // HelloSwift

写入(或读取)二进制数据。

//  Write binary data.
let binFile = Path.documentsDir["foo.bin"]
binFile.writeData( NSData()  )

// Read  binary data.
let data = binFile.readData()!

错误处理

touchremovecopyTowriteTomkdir 返回一个枚举的 Result

如果操作成功,则 Resultvalue 属性。如果操作失败,则 Resulterror 属性。

let result = Path.documentsDir["subdir"].mkdir()
if( result.isSuccess ){ 
    println( result.value! ) 
}
if( result.isFailure ){ 
    println( result.error! ) 
}

或者您可以用闭包风格进行编写。(您使用这种风格,您不需要解包可选值)

Path.documentsDir["subdir"].mkdir()
    .onSuccess({ (value:Path) in 
        println( value )
    })
    .onFailure({ (error:NSError) in 
        println( error )
    })

安装

许可证

SwiftPathClass是在MIT许可证下发布的。有关详细信息,请参阅LICENSE。