Objective c 以编程方式获取iPhone上的已用空间和可用空间

Objective c 以编程方式获取iPhone上的已用空间和可用空间,objective-c,ios,Objective C,Ios,可能重复: 我想在iOS应用程序中获取iOS设备的以下详细信息。我已经在谷歌上搜索过了,但是我没有得到任何关于这些的想法: 格式化空间 使用空间 自由空间 对statfs进行C系统调用 见: 这就是答案: 您可以使用 您需要的是以下功能: - (NSNumber *) totalDiskSpace; - (NSNumber *) freeDiskSpace; 对于总空间和可用空间,此方法将从UIDevice Hardware.h返回freeSpace - (uint64_t)freeDisk

可能重复:

我想在iOS应用程序中获取iOS设备的以下详细信息。我已经在谷歌上搜索过了,但是我没有得到任何关于这些的想法:

  • 格式化空间
  • 使用空间
  • 自由空间

  • 对statfs进行C系统调用

    见:

    这就是答案:

    您可以使用 您需要的是以下功能:

    - (NSNumber *) totalDiskSpace;
    - (NSNumber *) freeDiskSpace;
    

    对于总空间和可用空间,此方法将从UIDevice Hardware.h

    返回freeSpace

    - (uint64_t)freeDiskspace{
        uint64_t totalSpace = 0;
        uint64_t totalFreeSpace = 0;
    
        __autoreleasing NSError *error = nil;  
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
        NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];  
    
       if (dictionary) {  
           NSNumber *fileSystemSizeInBytes = [dictionary objectForKey: NSFileSystemSize];  
           NSNumber *freeFileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
          totalSpace = [fileSystemSizeInBytes unsignedLongLongValue];
          totalFreeSpace = [freeFileSystemSizeInBytes unsignedLongLongValue];
          NSLog(@"Memory Capacity of %llu MiB with %llu MiB Free memory available.", ((totalSpace/1024ll)/1024ll), ((totalFreeSpace/1024ll)/1024ll));
       }
       else {  
          NSLog(@"Error Obtaining System Memory Info: Domain = %@, Code = %d", [error domain], [error code]);  
       }  
    
       return totalFreeSpace;
    }
    

    您还可以使用NSFileManager和方法

    - (NSDictionary *)attributesOfFileSystemForPath:(NSString *)path error:(NSError **)error
    

    在要发送数据的路径上。此方法使用statfs(在其他答案中提到)。

    这可能会帮助您:@H2CO3:我想知道。。。我们可以在沙盒应用程序中这样做吗?@AnoopVaidya为什么不能?这使用POSIX层。