仅在设备的文档目录中的第一个runnable上创建plist文件

时间:2010-07-13 23:54:05

标签: iphone objective-c plist

我目前已将所有设置设置为从文档目录中读取并写入,但无法执行此操作,因为该文件尚不存在。

如何在代码中创建文件?

3 个答案:

答案 0 :(得分:1)

使用NSFileManger的fileExistsAtPath:查看文件是否存在。如果在继续执行需要该文件的代码之前没有创建它。

答案 1 :(得分:1)

如果您的应用程序包中已经有文档的模板版本,那么您应该能够使用类似于以下内容的方法将其写入应用程序的文档目录。我没有测试过这段代码,所以我可能会遇到一些错误,但这是一般的想法。

- (void) applicationDidFinishLaunching {
  NSArray* directories = NSSearchPathsForDirectoriesInDomain(NSDocumentsDirectory, NSUserDomainMask, YES);
  NSString* documentsDirectory = [directories objectAtIndex: 0];
  NSString* path = [documentsDirectory stringByAppendingPathComponent: @"Something.plist"];

  if (![[NSFileManager sharedInstance] fileExistsAtPath: path]) {
    NSString* infoTemplatePath = [[NSBundle mainBundle] pathForResource: @"Something" ofType: @"plist"];
    NSDictionary* info = [NSDictionary dictionaryWithContentsOfFile: infoTemplatePath];
    [info writeToFile: path];
  }
}

答案 2 :(得分:1)

这个对我来说效果更好:

        NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *documentDBFolderPath = [documentsDirectory stringByAppendingPathComponent:@"*.db"];

    if (![fileManager fileExistsAtPath:documentDBFolderPath])
    {
        NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"*.db"];
        [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];
    }