在iOS 8.1应用程序中,我正在使用NSURLSessionDownloadTask在后台下载文件,有时有时会变得很大。

一切正常,但是如果手机磁盘空间不足怎么办?下载会失败并表明这是剩余磁盘空间的问题吗?有什么好的方法可以提前检查吗?

最佳答案

您可以像这样获得用户设备的可用磁盘空间:

- (NSNumber *)getAvailableDiskSpace
{
    NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/var" error:nil];
    return [attributes objectForKey:NSFileSystemFreeSize];
}

您可能需要开始下载以获取正在下载的文件的大小。 NSURLSession有一个方便的委托(delegate)方法,可以在任务恢复时为您提供预期的字节数:
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes
{
    // Check if we have enough disk space to store the file
    NSNumber *availableDiskSpace = [self getAvailableDiskSpace];
    if (availableDiskSpace.longLongValue < expectedTotalBytes)
    {
        // If not, cancel the task
        [downloadTask cancel];

        // Alert the user
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Low Disk Space" message:@"You don't have enough space on your device to download this file. Please clear up some space and try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];
    }
}

关于ios - 如果在后台使用NSURLSessionDownloadTask时磁盘空间用完了怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27815650/

10-13 02:26