web-dev-qa-db-fra.com

Trouver la taille du fichier

Dans mon application iPhone, j'utilise le code suivant pour trouver la taille d'un fichier. Même si le fichier existe, je vois zéro pour la taille. Quelqu'un peut-il m'aider? Merci d'avance.

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];
56
Kiran

Essaye ça;

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

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

Notez que la taille du fichier ne tient pas nécessairement dans un entier (en particulier un signé), bien que vous puissiez certainement perdre beaucoup de temps pour iOS car vous ne dépasserez jamais cela en réalité. L'exemple utilise longtemps comme dans mon code je dois être compatible avec les systèmes avec beaucoup plus de stockage disponible.

122
Roger

Une doublure à Swift:

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

Si vous avez une URL (NSURL, pas une String), vous pouvez obtenir la taille du fichier sans FileManager:

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

Obtenez la taille du fichier dansMB Essayez ce code pour Swift  

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
}
0
Urvish Patel

Swift 4.x

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