下面的代码段转自这个网站,备用:
16. Copy a file from your app bundle to Documents
You may want to include files with your bundle that get copied into your documents folder in the sandbox. The following code is adapted from the Apple "SQLiteBooks" example:- (void)makeDocumentSubdir:(NSString *)subdirname
{ // First, test for existence. BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager];// set up the basic directory path name
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];// create the directory path name for the subdirectory
NSString *subdirectory = [paths objectAtIndex:0]; subdirectory = [documentsDirectory stringByAppendingPathComponent:subdirname]; success = [fileManager createDirectoryAtPath:subdirectory withIntermediateDirectories:YES attributes:nil error:NULL ];}- (void)copyFileNamed:(NSString *)filename intoDocumentsSubfolder:(NSString *)dirname
{ // First, test for existence. BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; // set up the basic directory path name NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];// set up the directory path name for the subdirectory
NSString *subdirectory = [documentsDirectory stringByAppendingPathComponent:dirname];// set up the full path for the destination file
NSString *writableFilePath = [subdirectory stringByAppendingPathComponent:filename]; success = [fileManager fileExistsAtPath:writableFilePath];// if the file is already there, just return
if (success) return; // The file not exist, so copy it to the documents flder. NSString *defaultFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:filename]; success = [fileManager copyItemAtPath:defaultFilePath toPath:writableFilePath error:&error]; if (!success) { //[self alert:@"Failed to copy resource file"]; NSAssert1(0, @"Failed to copy file to documents with message .", [error localizedDescription]); }} - (void)firstRunSetup{ [self makeDocumentSubdir:@"FileDir1"]; [self copyFileNamed:@"FirstFile.sqlite" intoDocumentsSubfolder:@"FileDir1"]; [self copyFileNamed:@"SecondFile.sqlite" intoDocumentsSubfolder:@"FileDir1"];}