gpt4 book ai didi

ios - 后台下载后无法移动文件 : "No such file"

转载 作者:技术小花猫 更新时间:2023-10-29 10:36:54 26 4
gpt4 key购买 nike

我有一个应用程序使用 NSURLSessionbackgroundSessionConfiguration 实例来处理一些 NSURLSessionDownloadTask 任务。任务已正确创建并完成下载,但是在 URLSession:downloadTask:didFinishDownloadingToURL: 中,当我将下载的文件从 location 移动到磁盘上的永久位置时,我有时(阅读:经常)得到错误:

NSUnderlyingError=0x178247890 "The operation couldn’t be completed. No such file or directory"

就好像下载的文件在我有机会移动它之前已从临时目录 (../Library/Caches/com.apple.nsnetworkd/..) 中清除。

在所有其他因素相同的情况下,对同一个远程文件运行该操作将以两种方式运行,因此我无法识别任何会导致它有时工作的因素。

有没有办法确保这个文件在完成后能保留足够长的时间以将其移动到位?

编辑:我也经常在正常(非后台) session 中看到这种情况

最佳答案

退出此方法后临时文件会自动删除,您可以尝试将此返回文件保存为NSData并直接保存到所需位置。

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {

// Create a NSFileManager instance
NSFileManager *fileManager = [[NSFileManager alloc] init];

// Get the documents directory URL
NSArray *documentURLs = [fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *documentsDirectory = [documentURLs firstObject];

// Get the file name and create a destination URL
NSString *sendingFileName = [downloadTask.originalRequest.URL lastPathComponent];
NSURL *destinationUrl = [documentsDirectory URLByAppendingPathComponent:sendingFileName];

// Hold this file as an NSData and write it to the new location
NSData *fileData = [NSData dataWithContentsOfURL:location];
[fileData writeToURL:destinationUrl atomically:NO];
}

关于ios - 后台下载后无法移动文件 : "No such file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20251432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com