【转】从bundle中复制文件到Documents目录中的代码
下面的代码段转自这个网站,备用:
http://umlautllama.com/w2/?action=view&page=iPhone%20Helpful%20Coding%20Tips
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"];
}
----==== Email: slofslb (GTD) qq.com 请将(GTD)换成@ ====----
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
作者:申龙斌的程序人生
---- 魔方、桥牌、象棋、游戏人生...
---- BASIC、C++、JAVA、C#、Haskell、Objective-C、Open Inventor、程序人生...
---- GTD伴我实现人生目标
---- 区块链生存训练
---- 用欧拉计划学Rust编程
---- 申龙斌的读书笔记(2011-2019)
----