2011-02-26 54 views
5

我試圖獲取設備上的可用空間以及我的沙箱正在使用的空間量。有什麼想法嗎?使用的設備可用空間和沙箱空間

感謝, 裏克

+0

仍在尋找一些幫助。我已經試過: NSFileManager.SystemFreeSize.Length但得到一些廢話(20) 和 DriveInfo [] allDrives = DriveInfo.GetDrives(); d.AvailableFreeSpace; 但是這使應用程序崩潰,MonoTouch告訴我該API不受支持。 爲什麼如此frigg'n難以獲得設備上的自由空間? – Rick 2011-03-23 16:24:54

+0

仍在尋找如何獲得設備上的全部可用空間的答案 - MonoTouch的任何更新? – Rick 2011-08-10 21:34:16

回答

6

在Objective-C,你可以得到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]; 

爲了讓您的應用使用閱讀這個問題的空間量: Calculate the size of a folder

0

這很接近,但並不完美。

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

這是直接從@ phix23轉化爲MonoTouch的(對不起,線的長度,可可太冗長):

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