无法打开文件,因为在获取 FileAttributesKey 时没有这样的文件 - Swift
The file couldn't be opened because there is no such file when getting FileAttributesKey - Swift
我正在尝试使用 Swift 在 iOS 中使用 FileManager 获取 FileAttributesKey。当我尝试这样做时,出现以下错误
Error Domain=NSCocoaErrorDomain Code=260 "The file “Personal%20Narrative%20Essay.txt” couldn’t be opened because there is no such file." UserInfo={NSFilePath=file:///private/var/mobile/Library/Mobile%20Documents/com~apple~TextEdit/Documents/Personal%20Narrative%20Essay.txt, NSUnderlyingError=0x283e720a0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
它说该文件不存在,但我知道它确实存在,因为它出现在 UIDocumentPicker 中,我可以使用 try! Data(contentsOf: URL)
.[=14= 获取文件的内容]
我获取文件属性的代码是:
func processURL(url: URL) -> Bool {
let newPath = url.absoluteString
print(newPath)
do {
let attributes = try FileManager.default.attributesOfItem(atPath: newPath)
let fileSize = attributes[FileAttributeKey.size]
print("Calculated File Size: \(fileSize!)")
return true
}
catch {
print(error)
self.isShowingSpinner = false
self.isShowingURLErrorAlert = true
return false
}
return true
}
我现在只需要能够使用上述函数获取我正在做的文件大小。我不明白我是否做错了什么。在此先感谢您的帮助。
我可以通过一个简单的 Playground 重现您的问题,我在其中放置了一个名为“hello.text”的资源。
结果如下:
let filePath = Bundle.main.path(forResource: "hello", ofType: "txt")!
// Prints as /var/folders/blah-blah-blah/hello.txt
let fileURL = Bundle.main.url(forResource: "hello", withExtension: "txt")!
// Prints as file:///var/folders/blah-blah-blah/hello.txt
问题是 file://
前缀特定于文件的 URL
并且对于 String
.
类型的路径参数不适用
try FileManager.default.attributesOfItem(atPath: fileURL.absoluteString) // ❌
try FileManager.default.attributesOfItem(atPath: fileURL.path) // ✅
我正在尝试使用 Swift 在 iOS 中使用 FileManager 获取 FileAttributesKey。当我尝试这样做时,出现以下错误
Error Domain=NSCocoaErrorDomain Code=260 "The file “Personal%20Narrative%20Essay.txt” couldn’t be opened because there is no such file." UserInfo={NSFilePath=file:///private/var/mobile/Library/Mobile%20Documents/com~apple~TextEdit/Documents/Personal%20Narrative%20Essay.txt, NSUnderlyingError=0x283e720a0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
它说该文件不存在,但我知道它确实存在,因为它出现在 UIDocumentPicker 中,我可以使用 try! Data(contentsOf: URL)
.[=14= 获取文件的内容]
我获取文件属性的代码是:
func processURL(url: URL) -> Bool {
let newPath = url.absoluteString
print(newPath)
do {
let attributes = try FileManager.default.attributesOfItem(atPath: newPath)
let fileSize = attributes[FileAttributeKey.size]
print("Calculated File Size: \(fileSize!)")
return true
}
catch {
print(error)
self.isShowingSpinner = false
self.isShowingURLErrorAlert = true
return false
}
return true
}
我现在只需要能够使用上述函数获取我正在做的文件大小。我不明白我是否做错了什么。在此先感谢您的帮助。
我可以通过一个简单的 Playground 重现您的问题,我在其中放置了一个名为“hello.text”的资源。
结果如下:
let filePath = Bundle.main.path(forResource: "hello", ofType: "txt")!
// Prints as /var/folders/blah-blah-blah/hello.txt
let fileURL = Bundle.main.url(forResource: "hello", withExtension: "txt")!
// Prints as file:///var/folders/blah-blah-blah/hello.txt
问题是 file://
前缀特定于文件的 URL
并且对于 String
.
try FileManager.default.attributesOfItem(atPath: fileURL.absoluteString) // ❌
try FileManager.default.attributesOfItem(atPath: fileURL.path) // ✅