IT박스

파일 크기 찾기

itboxs 2020. 12. 29. 06:49
반응형

파일 크기 찾기


내 iPhone 앱에서 파일 크기를 찾기 위해 다음 코드를 사용하고 있습니다. 파일이 존재하더라도 크기가 0으로 표시됩니다. 누구든지 나를 도울 수 있습니까? 미리 감사드립니다.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *URL = [documentsDirectory stringByAppendingPathComponent:@"XML/Extras/Approval.xml"];

NSLog(@"URL:%@",URL);
NSError *attributesError = nil;
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:URL error:&attributesError];

int fileSize = [fileAttributes fileSize];

이 시도;

NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:URL error:&attributesError];

NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
long long fileSize = [fileSizeNumber longLongValue];

실제로는 절대 초과하지 않으므로 iOS의 경우 확실히 long으로 떨어질 수 있지만 fileSize가 반드시 정수 (특히 서명 된 정수)에 맞지는 않습니다. 이 예제는 내 코드에서 훨씬 더 큰 스토리지를 사용할 수있는 시스템과 호환되어야하는 한 오래 사용됩니다.


스위프트의 한 라이너 :

let fileSize = try! NSFileManager.defaultManager().attributesOfItemAtPath(fileURL.path!)[NSFileSize]!.longLongValue

URL( NSURL가 아니라 String) 가 있으면 다음 없이 파일 크기를 얻을 수 있습니다 FileManager.

 let attributes = try? myURL.resourceValues(forKeys: Set([.fileSizeKey]))
 let fileSize = attributes?.fileSize // Int?

스위프트 4.x

do {
    let fileSize = try (FileManager.default.attributesOfItem(atPath: filePath) as NSDictionary).fileSize()
            print(fileSize)
    } catch let error {
            print(error)
    }

MB 단위로 파일 크기 가져 오기이 코드를 사용해보십시오.

func getSizeOfFile(withPath path:String) -> UInt64?
{
    var totalSpace : UInt64?

    var dict : [FileAttributeKey : Any]?

    do {
        dict = try FileManager.default.attributesOfItem(atPath: path)
    } catch let error as NSError {
         print(error.localizedDescription)
    }

    if dict != nil {
        let fileSystemSizeInBytes = dict![FileAttributeKey.systemSize] as! NSNumber

        totalSpace = fileSystemSizeInBytes.uint64Value
        return (totalSpace!/1024)/1024
    }
    return nil
}

참조 URL : https://stackoverflow.com/questions/5743856/finding-files-size

반응형