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];
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.
Une doublure à Swift:
let fileSize = try! NSFileManager.defaultManager().attributesOfItemAtPath(fileURL.path!)[NSFileSize]!.longLongValue
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?
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
}
Swift 4.x
do {
let fileSize = try (FileManager.default.attributesOfItem(atPath: filePath) as NSDictionary).fileSize()
print(fileSize)
} catch let error {
print(error)
}