2017-07-28 25 views
0

我有以下URL更改URL最後一個組件名稱並添加擴展名重命名的一個

file:///Users/ivancantarino/Library/Developer/CoreSimulator/Devices/CCE2FCA5-05F0-4BB7-9A25-CBC168398A62/data/Containers/Data/Application/E48179F9-84FB-4CB3-B993-1E33FCFB5083/Library/Caches/CloudKit/34af81edf8344be1cf473ef394e06ccc8e1bc8cf/Assets/AE86E028-E4E0-45D5-B5FE-BAE975D07F2A.0166f7df06d2562d8d53e70a3779a46de3769584c3

我試圖重新命名這個網址的最後部分組件,但仍然有一個網址不僅文件名。

我設法用下面的代碼訪問的最後一部分:

func extractAndBreakFilenameInComponents(fileURL: NSURL) { 
    let fileURLParts = fileURL.path!.components(separatedBy: "/") 
    let fileName = fileURLParts.last 
    print("filename:", fileName) 
    // prints: AE86E028-E4E0-45D5-B5FE-BAE975D07F2A.0166f7df06d2562d8d53e70a3779a46de3769584c3 
} 

我想給fileName更改爲類似myFile.pdf但保持URL

這是一個簡單的URL重命名,不創建一個新的,只是改變現有的

這是什麼最好的方法?

謝謝

回答

1

你也可以做這樣

var url = URL.init(string: "http://www.example.com/test123") 

url?.deleteLastPathComponent() 
url?.appendPathComponent("file.pdf") 


print(url) 

輸出:http://www.example.com/file.pdf

希望它可以幫助你

編輯

您需要重命名文件,請使用如下代碼

1)創建複製和更新最後一個組件

var urlNew = URL.init(string: "http://www.example.com/test123") 

urlNew?.deleteLastPathComponent() 
urlNew?.appendPathComponent("file.pdf") 



       do { 
        try FileManager.default.moveItem(atPath: oldURL!, toPath: urlNew) 
       } catch { 

       } 
+0

將這一變化的文件路徑本身?或只是指針? 我的意思是,文件本身是否會改變它的名稱,並且指針現在將與file.pdf一致,如你所說? 問這個,因爲我可以按照你說的方式進行,但是當從url訪問文件時,它可能找不到它,因爲文件名仍在前一階段。 –

+0

它會將上次test123更改爲file.pdf。你需要對嗎?其餘部分將完全沒有改動 –

+0

。我認爲它只會創建一個新的URL,其ghost文件名不會在設備內部文件夾中正確存在;但正如你所說,它改變了真實的文件名我會試一試,我會很快反饋。謝謝;) –

0

你能做到這樣

let fileName = fileURLParts.last 
    var newPath = "" 
    for i in 0 ..< fileURLParts.count 
    { 
     if i == (fileURLParts.count-1) { 
      newPath.append(fileName) 
     }else{ 
      newPath.append(fileURLParts[i]) 
     } 

    } 
相關問題