web-dev-qa-db-ja.com

DocumentDirectoryのファイル名を変更します

DocumentDirectoryにPDF=ファイルがあります。

ユーザーが選択した場合、このPDFファイルを別の名前に変更できるようにしたい。

このプロセスを開始するUIButtonがあります。新しい名前はUITextFieldから取得されます。

どうすればいいですか?私はSwiftが初めてで、これに関するObjective-Cの情報しか見つけられず、変換に苦労しています。

ファイルの場所の例は次のとおりです。

/var/mobile/Containers/Data/Application/39E030E3-6DA1-45FF-BF93-6068B3BDCE89/Documents/Restaurant.pdf

ファイルが存在するかどうかを確認する次のコードがあります。

        var name = selectedItem.adjustedName

        // Search path for file name specified and assign to variable
        let getPDFPath = paths.stringByAppendingPathComponent("\(name).pdf")

        let checkValidation = NSFileManager.defaultManager()

        // If it exists, delete it, otherwise print error to log
        if (checkValidation.fileExistsAtPath(getPDFPath)) {

            print("FILE AVAILABLE: \(name).pdf")

        } else {

            print("FILE NOT AVAILABLE: \(name).pdf")

        }
22
ChallengerGuy

ファイルの名前を変更するには、NSFileManagerのmoveItemAtURLを使用できます。

同じ場所でmoveItemAtURLを使用してファイルを移動しますが、2つの異なるファイル名を使用することは、「名前変更」と同じ操作です。

簡単な例:

スイフト2

do {
    let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    let documentDirectory = NSURL(fileURLWithPath: path)
    let originPath = documentDirectory.URLByAppendingPathComponent("currentname.pdf")
    let destinationPath = documentDirectory.URLByAppendingPathComponent("newname.pdf")
    try NSFileManager.defaultManager().moveItemAtURL(originPath, toURL: destinationPath)
} catch let error as NSError {
    print(error)
}

Swift

do {
    let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    let documentDirectory = URL(fileURLWithPath: path)
    let originPath = documentDirectory.appendingPathComponent("currentname.pdf")
    let destinationPath = documentDirectory.appendingPathComponent("newname.pdf")
    try FileManager.default.moveItem(at: originPath, to: destinationPath)
} catch {
    print(error)
}
37
ayaio

NSURLでアイテムの名前を変更する簡単な方法があります。

url.setResourceValue(newName, forKey: NSURLNameKey)
4
Chintan Ghate