developer tip

경로가 주어진 파일 크기를 얻는 방법은 무엇입니까?

copycodes 2020. 11. 9. 08:14
반응형

경로가 주어진 파일 크기를 얻는 방법은 무엇입니까?


NSString에 포함 된 파일 경로가 있습니다. 파일 크기를 얻는 방법이 있습니까?


이 하나의 라이너는 사람들을 도울 수 있습니다 :

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

파일 크기를 바이트 단위로 반환합니다.


fileAttributesAtPath : traverseLink :는 Mac OS X v10.5부터 더 이상 사용되지 않습니다. attributesOfItemAtPath:error:대신 사용하십시오 . thesamet에서 언급 동일한 URL에 설명되어 있습니다.

내가 Objective-C 초보자이고을 호출 할 때 발생할 수있는 오류를 무시한다는 경고를 받으면 attributesOfItemAtPath:error:다음을 수행 할 수 있습니다.

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

Swift 버전이 필요한 경우 :

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

attributesOfItemAtPath : error : 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);

바이트가있는 파일 크기 만 사용하려면

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

NSByteCountFormatter 정확한 KB와 (바이트)에서 파일 크기의 문자열 변환, MB, GB ... 같은 그것의 반환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);
}

Oded Ben Dov의 답변에 따라 여기에 객체를 사용하고 싶습니다.

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

스위프트 2.2 :

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

파일 크기를 바이트 단위로 제공합니다.

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

Swift4 :

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

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)")
}

참고 URL : https://stackoverflow.com/questions/815471/how-to-get-the-file-size-given-a-path

반응형