9

システム ディスクだけでなく、あらゆるストレージを見つけられるようにしたいと考えていますが、それが最も重要です。

4

7 に答える 7

13

使用する-[NSFileManager attributesOfFileSystemForPath:error:]

于 2009-10-26T18:09:38.777 に答える
11

私はこれを使用します:

NSDictionary* fileAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/"
                                                                                   error:&error];
unsigned long long freeSpace = [[fileAttributes objectForKey:NSFileSystemFreeSize] longLongValue];
NSLog(@"free disk space: %dGB", (int)(freeSpace / 1073741824));
于 2010-04-15T14:23:26.657 に答える
10

EDIT fileSystemAttributesAtPath: は非推奨です。NSD が提案するように attributesOfFileSystemForPath:error: を使用してください。うまくいかないと思ったら間違いを犯した。

// this works
NSError *error = nil;
NSDictionary *attr = [NSFM attributesOfFileSystemForPath:@"/" error:&error];
if (!error) {
    double bytesFree = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
}

attributesOfItemAtPath:error を試しましたが、返された辞書には NSFileSystemFreeNodes キーがないようです。

NSFileManager *fm = [NSFileManager defaultManager];
NSError *error = nil;
NSDictionary *attr = [fm attributesOfItemAtPath:@"/" error:&error];
if (!error) {
    NSLog(@"Attr: %@", attr);
}

2009-10-28 17:21:11.936 MyApp[33149:a0b] Attr: {
    NSFileCreationDate = "2009-08-28 15:37:03 -0400";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 80;
    NSFileGroupOwnerAccountName = admin;
    NSFileModificationDate = "2009-10-28 15:22:15 -0400";
    NSFileOwnerAccountID = 0;
    NSFileOwnerAccountName = root;
    NSFilePosixPermissions = 1021;
    NSFileReferenceCount = 40;
    NSFileSize = 1428;
    NSFileSystemFileNumber = 2;
    NSFileSystemNumber = 234881026;
    NSFileType = NSFileTypeDirectory;
}

少し調べてみると、 fileSystemAttributesAtPath : がそれを返すメソッドのようです。変。

NSFileManager *fm = [NSFileManager defaultManager];
NSDictionary *attr = [fm fileSystemAttributesAtPath:@"/"]; 
NSLog(@"Attr: %@", attr);


2009-10-28 17:24:07.993 MyApp[33283:a0b] Attr: {
    NSFileSystemFreeNodes = 5027061;
    NSFileSystemFreeSize = 20590841856;
    NSFileSystemNodes = 69697534;
    NSFileSystemNumber = 234881026;
    NSFileSystemSize = 285481107456;
}
于 2009-10-28T21:27:59.043 に答える
1

ハードディスク デバイス メーカーは、以下を使用します。

1GB = 1000MB

1MB = 1000KB など

Windows で 8GB の USB スティックが表示される場合、常に実際より少ない容量 (7.8 GB など) が表示されます。これは、1 GB = 1024 MB と見なされるためです)。OSX では、同じ USB スティックが 8GB (リアル) です。

そう(freeSpace / 1073741824)でなければならない(freeSpace / 1000000000)

少なくともOSXでは

于 2014-02-20T14:35:34.943 に答える
1

この関数を使用して、swiftを通じて空き容量を取得できます

func getFreeSpace() -> CGFloat {
      do {
         let fileAttributes = try NSFileManager.defaultManager().attributesOfFileSystemForPath("/")
         if let size = fileAttributes[NSFileSystemFreeSize] as? CGFloat {
            return size
         }
      } catch { }
      return 0
   }
于 2016-04-15T18:34:52.803 に答える