【问题标题】:Change URL last component name and add extension to the renamed one更改 URL 最后一个组件名称并将扩展名添加到重命名的组件
【发布时间】:2018-01-04 05:41:53
【问题描述】:

我有以下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

我正在尝试重命名此 url 的最后一部分组件,但仍然有一个 url,而不仅仅是文件名。

我已经设法使用以下代码访问了最后一部分:

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 重命名,不是创建新的,只是更改现有的

这方面最好的方法是什么?

谢谢

【问题讨论】:

    标签: ios swift3 nsstring nsurl


    【解决方案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 {
    
                    }
    

    【讨论】:

    • 这会改变文件路径本身吗?还是只是指针?我的意思是,文件本身会更改其名称,并且指针现在将与您所说的 file.pdf 一起使用吗?问这个是因为我可以按照你说的方式做,但是当从 url 访问文件时,它可能找不到它,因为文件名仍在前一个阶段。
    • 它会将最后一个 test123 更改为 file.pdf 。你需要对吗?其余的将保持不变
    • 完全正确。我认为它只会创建一个带有幽灵文件名的新 URL,该文件名不会正确存在于设备内部文件夹中;但正如你所说,它改变了真实的文件名,我会试一试,我会尽快反馈。谢谢;)
    • 好的,祝你好运..:)
    • 不如预期,可能是因为我解释错了。也许我要做的是更改特定 URL 路径的文件名
    【解决方案2】:

    你可以这样做

    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])
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2022-01-01
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多