web-dev-qa-db-ja.com

パスを指定してファイルサイズを取得する方法は?

NSStringに含まれるファイルへのパスがあります。ファイルサイズを取得する方法はありますか?

67
hekevintran

このライナーは人々を助けることができます:

unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize];

これは、ファイルサイズをバイト単位で返します。

133
Oded Ben Dov

FileAttributesAtPath:traverseLink:はMac OS X v10.5で廃止されることに注意してください。つかいます attributesOfItemAtPath:error:代わりに、 同じURL thesametの説明で説明されています。

私はObjective-Cの初心者であり、attributesOfItemAtPath:error:、次のことができます。

NSString *yourPath = @"Whatever.txt";
NSFileManager *man = [NSFileManager defaultManager];
NSDictionary *attrs = [man attributesOfItemAtPath: yourPath error: NULL];
UInt32 result = [attrs fileSize];
74
Frank Shearar

誰かがSwiftバージョン:

let attr: NSDictionary = try! NSFileManager.defaultManager().attributesOfItemAtPath(path)
print(attr.fileSize())
17
Tyler Long

attributesOfItemAtPath:error:でCPUが発生します
stat を使用する必要があります。

#import <sys/stat.h>

struct stat stat1;
if( stat([inFilePath fileSystemRepresentation], &stat1) ) {
      // something is wrong
}
long long size = stat1.st_size;
printf("Size: %lld\n", stat1.st_size);
12
Parag Bafna

バイトのファイルサイズのみを使用する場合は、

unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:nil] fileSize];

NSByteCountFormatter正確なKB、MB、GBを使用した(Bytesからの)ファイルサイズの文字列変換... 120 MBまたは120 KB

NSError *error = nil;
NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:&error];
if (attrs) {
    NSString *string = [NSByteCountFormatter stringFromByteCount:fileSize countStyle:NSByteCountFormatterCountStyleBinary];
    NSLog(@"%@", string);
}
6
Sk Borhan Uddin

Oded Ben Dovからの回答に従って、ここではオブジェクトを使用します。

NSNumber * mySize = [NSNumber numberWithUnsignedLongLong:[[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize]];
6
Apollo

Swift 2.2:

do {
    let attr: NSDictionary = try NSFileManager.defaultManager().attributesOfItemAtPath(path)
    print(attr.fileSize())
} catch {
        print(error)
}
2
Bill Chan

バイト単位でファイルサイズを指定します...

uint64_t fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:_filePath error:nil] fileSize];
1
Akshay Phulare

Swift 3.x以降では、以下を使用できます。

do {
    //return [FileAttributeKey : Any]
    let attr = try FileManager.default.attributesOfItem(atPath: filePath)
    fileSize = attr[FileAttributeKey.size] as! UInt64

    //or you can convert to NSDictionary, then get file size old way as well.
    let attrDict: NSDictionary = try FileManager.default.attributesOfItem(atPath: filePath) as NSDictionary
    fileSize = dict.fileSize()
} catch {
    print("Error: \(error)")
}
0
d0ping

Swift4:

        let attributes = try! FileManager.default.attributesOfItem(atPath: path)
        let fileSize = attributes[.size] as! NSNumber
0