Tengo una ruta de archivo contenida en un NSString. ¿Hay algún método para obtener su tamaño de archivo?¿Cómo obtener el tamaño del archivo dado un camino?
Respuesta
Tenga en cuenta que fileAttributesAtPath: traverseLink: está en desuso desde Mac OS X v10.5. Use attributesOfItemAtPath:error:
en su lugar, descrito en same URL thesamet mentions.
Con la advertencia de que soy un novato de Objective-C, y estoy haciendo caso omiso de los errores que podrían ocurrir en llamar attributesOfItemAtPath:error:
, puede hacer lo siguiente:
NSString *yourPath = @"Whatever.txt";
NSFileManager *man = [NSFileManager defaultManager];
NSDictionary *attrs = [man attributesOfItemAtPath: yourPath error: NULL];
UInt32 result = [attrs fileSize];
Este revestimiento puede ayudar a la gente:
unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize];
Esto devuelve el tamaño del archivo en Bytes.
CPU raises with attributesOfItemAtPath:error:
Debe usar 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);
¿No debería estar utilizando fileSystemRepresentation en lugar de UTF8String aquí? –
Tienes razón. HFS + define una descomposición Unicode estándar ("descomposición canónica") para nombres de archivos. -UTF8String no garantiza devolver la composición correcta; -fileSystemRepresentation es. [1] (http://cocoadev.com/wiki/StringWithCString) –
@ParagBafna Sé que este es un hilo viejo, pero ¿sabes cómo podría usar la estructura 'stat' en poco tiempo? –
Tras la respuesta de Oded Ben Dov, prefiero utilizar un objeto aquí:
NSNumber * mySize = [NSNumber numberWithUnsignedLongLong:[[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize]];
En caso de que alguien necesita una versión Swift:
let attr: NSDictionary = try! NSFileManager.defaultManager().attributesOfItemAtPath(path)
print(attr.fileSize())
Swift 2.2:
do {
let attr: NSDictionary = try NSFileManager.defaultManager().attributesOfItemAtPath(path)
print(attr.fileSize())
} catch {
print(error)
}
Dará tamaño de archivo en Byte. ..
uint64_t fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:_filePath error:nil] fileSize];
Si desea que sólo el tamaño de archivo con bytes sólo tiene que utilizar,
unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:nil] fileSize];
NSByteCountFormatter de conversión serie de tamaño del archivo (de Bytes) con precisión KB, MB, GB ... Sus rendimientos como 120 MB
o 120 KB
NSError *error = nil;
NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:&error];
if (attrs) {
NSString *string = [NSByteCountFormatter stringFromByteCount:fileSize countStyle:NSByteCountFormatterCountStyleBinary];
NSLog(@"%@", string);
}
Swift4:
let attributes = try! FileManager.default.attributesOfItem(atPath: path)
let fileSize = attributes[.size] as! NSNumber
- 1. Cómo obtener el tamaño del archivo HttpPostedFileBase
- 2. ¿Cómo crear un archivo con un tamaño dado en Linux?
- 3. NSFileManager - Comprobar el tamaño del archivo?
- 4. Cómo obtener el tamaño de archivo
- 5. Obtener el tamaño del archivo en el disco
- 6. tamaño del teclado dado por NSNotificationCenter
- 7. Cómo obtener el tamaño de un NSString
- 8. ¿Cómo obtener un texto antes del elemento dado usando jQuery?
- 9. Cómo representar visualmente el tamaño del archivo
- 10. ¿Cómo optimizar el tamaño del archivo PDF?
- 11. Obtener el tamaño del archivo de carga antes de cargar
- 12. PyQt: ¿cómo obtener el nivel superior padre del widget dado?
- 13. ¿Cómo obtener UIView dado un CGPoint?
- 14. Obtener el tamaño de un recurso de archivo de Android?
- 15. Cómo obtener el tamaño de archivo de los encabezados http
- 16. Cómo obtener el método circundante en el archivo fuente Java para un número de línea dado
- 17. ¿Cómo consulto la información del archivo "Tamaño en el disco"?
- 18. Obtener el tamaño del puntero en C
- 19. Obtener elemento del selector dado un índice con jQuery
- 20. ¿Cómo se obtiene el tamaño del archivo por fd?
- 21. Cómo obtener el tamaño de archivo de "System.Drawing.Image"
- 22. Problema de tendido del camino/camino
- 23. python. obtener el tamaño de un objeto
- 24. Cómo encontrar el nombre del nodo raíz de un archivo xml dado
- 25. Obtener el tamaño del sistema RAM
- 26. Cómo obtener el carácter para un valor de ascii dado
- 27. ¿Cómo obtener un inflador de diseño dado un contexto?
- 28. ¿Cómo cambiar el tamaño del botón del archivo de entrada?
- 29. ¿Cómo puedo extraer el nombre del archivo y la extensión de un camino en C++
- 30. ¿Cómo obtener el volumen del archivo MP3?
Este código filtra el FileManager asignado. Te recomiendo que simplemente uses NSFileManager.defaultManager Singleton para evitar esto. –