2011-02-26 16 views
5

Estoy tratando de obtener el espacio libre en el dispositivo y la cantidad de espacio que está usando mi espacio limitado. ¿Alguna idea?Espacio libre del dispositivo y espacio de espacio aislado usado

Gracias, Rick

+0

Todavía estás buscando un poco de ayuda ... He intentado : NSFileManager.SystemFreeSize.Length pero obtenga algunas tonterías (20) y DriveInfo [] allDrives = DriveInfo.GetDrives(); d.AvailableFreeSpace; Pero esto colapsó la aplicación y MonoTouch me dijo que la API no es compatible. ¿Por qué es tan frigg'n difícil obtener el espacio libre en el dispositivo ??? – Rick

+0

¿Todavía está buscando una respuesta sobre cómo obtener espacio libre total en el dispositivo? ¿Alguna actualización de MonoTouch? – Rick

Respuesta

6

En Objective-C se puede obtener el espacio disponible del sistema de archivos con NSFileManager:

NSFileManager* filemgr = [NSFileManager defaultManager]; 

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docDirectory = [paths objectAtIndex:0];    

NSDictionary* fsAttr = [filemgr attributesOfFileSystemForPath:docDirectory error:NULL]; 

unsigned long long freeSize = [(NSNumber*)[fsAttr objectForKey:NSFileSystemFreeSize] unsignedLongLongValue]; 

para obtener la cantidad de espacio en su aplicación está utilizando leer esta pregunta: Calculate the size of a folder

0

esto está cerca, pero no es perfecto.

NSFileManager a = NSFileManager.DefaultManager; 
NSError _error; 

string _databaseFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), ".."); 
NSDictionary _b = a.GetFileSystemAttributes(_databaseFolder,out _error); 
NSObject _d = NSObject.FromObject("NSFileSystemFreeSize"); 
NSObject _c = _b.ObjectForKey(_d); 
0

Ésta es traducir el directo de @ phix23 a MonoTouch (Lo siento por la longitud de las líneas, el cacao es demasiado detallado):

var docDir = NSSearchPath.GetDirectories(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomain.User, true)[0]; 
var freeSpace = NSFileManager.DefaultManager.GetFileSystemAttributes(docDir).FreeSize; 
Cuestiones relacionadas