I开发者_C百科'm trying to get the free space on the device and the amount of space my sandbox is using. Any thoughts?
Thanks, Rick
In Objective-C you can get the available file system space with 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];
To get the amount of space your app is using read this question: Calculate the size of a folder
this is close, but not perfect.
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);
This is the direct translate from @phix23 to MonoTouch (Sorry for the length of the lines, cocoa is too verbose):
var docDir = NSSearchPath.GetDirectories(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomain.User, true)[0];
var freeSpace = NSFileManager.DefaultManager.GetFileSystemAttributes(docDir).FreeSize;
精彩评论