我在Flutter中下载了一个文件,并使用path_provider
包将其放置在从getTemporaryDirectory()
获得的目录中。然后使用MethodChannel
s调用一个方法,我正在调用以下方法:
private func saveDocument(_ filePath: String, _ result: @escaping FlutterResult) {
let fileManager = FileManager.default
print("File exists: (fileManager.fileExists(atPath: filePath))") // Prints -> File exists: true
do {
let documentsDir = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let documentsDirString = documentsDir.absoluteString
print("Documents dir exists: (fileManager.fileExists(atPath: documentsDirString))") // Prints -> Documents dir exists: false
if (!fileManager.fileExists(atPath: documentsDirString)) {
try fileManager.createDirectory(at: documentsDir, withIntermediateDirectories: true, attributes: nil)
}
let fileName = (filePath as NSString).lastPathComponent
let newFilePath = "(documentsDir.appendingPathComponent(fileName))"
try fileManager.copyItem(at: URL(fileURLWithPath: filePath), to: URL(fileURLWithPath: newFilePath))
result(true)
} catch {
print(error)
result(false)
}
}
我在控制台中得到以下错误:
File path: /Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/CE787CF1-1A9E-44C0-90FA-48928A3CE5F9/Library/Caches/filename.pdf
File exists: true
Documents dir exists: false
2021-04-26 10:01:51.693311+0530 Runner[9709:78939] open on /file:/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/CE787CF1-1A9E-44C0-90FA-48928A3CE5F9/Documents/filename.pdf: No such file or directory
Error Domain=NSCocoaErrorDomain Code=4 "The file “filename.pdf” doesn’t exist." UserInfo={NSSourceFilePathErrorKey=/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/CE787CF1-1A9E-44C0-90FA-48928A3CE5F9/Library/Caches/filename.pdf, NSUserStringVariant=(
Copy
), NSDestinationFilePath=/file:/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/CE787CF1-1A9E-44C0-90FA-48928A3CE5F9/Documents/filename.pdf, NSFilePath=/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/CE787CF1-1A9E-44C0-90FA-48928A3CE5F9/Library/Caches/filename.pdf, NSUnderlyingError=0x6000012baa30 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
我已经阅读了文档并在网上搜索了大约2天,但我找不到解决方案。
我正在努力实现的目标将文件移动到用户的文件管理器中,以便用户可以从文件应用查看、修改、共享等文档
我也尝试过在物理设备上运行这个,但没有运气
我尝试过的:
- 正在删除
try fileManager.createDirectory()
if语句。以下是有关删除此的日志:
File path: /Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/A00C3B10-8E12-44F1-B8F8-B53692CD4B56/Library/Caches/filename.pdf
File exists: true
Documents dir exists: false
2021-04-26 10:00:11.558244+0530 Runner[9338:76668] open on /file:/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/A00C3B10-8E12-44F1-B8F8-B53692CD4B56/Documents/filename.pdf: No such file or directory
Error Domain=NSCocoaErrorDomain Code=4 "The file “filename.pdf” doesn’t exist." UserInfo={NSSourceFilePathErrorKey=/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/A00C3B10-8E12-44F1-B8F8-B53692CD4B56/Library/Caches/filename.pdf, NSUserStringVariant=(
Copy
), NSDestinationFilePath=/file:/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/A00C3B10-8E12-44F1-B8F8-B53692CD4B56/Documents/filename.pdf, NSFilePath=/Users/user/Library/Developer/CoreSimulator/Devices/A55EF2F7-FD8A-469C-A835-1A6282066F50/data/Containers/Data/Application/A00C3B10-8E12-44F1-B8F8-B53692CD4B56/Library/Caches/filename.pdf, NSUnderlyingError=0x600003682130 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
我发现必须共享文件才能将其保存到文件中。我将使用share
软件包来完成此操作。