在我的iphone应用程序中,我使用了sqlite3来存储数据。 如何使用iphone功能获取数据库的大小?
如果有人有任何代码或任何有用的链接或任何其他决议,将不胜感激。
谢谢,
Mishal Shah
答案 0 :(得分:1)
尝试以下操作,这可以帮助您
- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
- (void) logSqlliteStoreSize
{
NSString *yourSqlLiteFileName = @"YOURDATABASE_NAME.sqlite";
NSString *yourSqlLitePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: yourSqlLiteFileName];
NSError *error;
NSDictionary *storeAttributesOfItemAtPath = [[NSFileManager defaultManager] attributesOfItemAtPath:yourSqlLitePath error:&error];
// here you should test for errors, this is a simplified version
// the next log will show much information about your sqlite file
// including the filesize
NSLog(@"storeAttributesOfItemAtPath=%@", storeAttributesOfItemAtPath);
}
答案 1 :(得分:1)
您可以使用以下代码(从my answer到this question)来确定数据库的大小和文件系统上的可用空间:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *persistentStorePath = [documentsDirectory stringByAppendingPathComponent:@"database.sqlite"];
NSError *error = nil;
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:persistentStorePath error:&error];
NSLog(@"Persistent store size: %@ bytes", [fileAttributes objectForKey:NSFileSize]);
NSDictionary *fileSystemAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:persistentStorePath error:&error];
NSLog(@"Free space on file system: %@ bytes", [fileSystemAttributes objectForKey:NSFileSystemFreeSize]);
这假设您的数据库名为“database.sqlite”,并存储在应用程序文档目录的根目录中。
答案 2 :(得分:0)
您可以在
中找到iPhone模拟器中应用程序的database
文件
~/Library/Application Support/iPhone Simulator/User/Applications/*a long number*/Documents/
如果你有一个越狱手机,你可以SSH
进入它,找到它也在/Applications/*<a long number>*/Documents/
文件夹中的应用程序文件夹。