2 daffodilgirl DaffodilGirl 于 2013.01.22 15:28 提问

创建文件:内容:属性,给出错误

我需要一个简单的createDB函数,如果DB文件不错字,就创建生成,但是在创建文件时报出 No Such file or directory 错误。

下面是代码中的一段:

-(void) createDB
{
    NSString* docsDir;
    NSArray* dirPaths;

    // Get directory path
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);    
    docsDir = [dirPaths objectAtIndex:0];
    dbPath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"players.db"]];
    NSFileManager* fileMgr = [NSFileManager defaultManager];


    if([fileMgr fileExistsAtPath:dbPath] == NO)
    {
        //Create the file in main application folder
        //dbPath = [[NSBundle mainBundle] pathForResource:@"players" ofType:@".db"];

        if (![fileMgr createFileAtPath:dbPath contents:nil attributes:nil])
            NSLog(@"Error was code: %d - message: %s", errno, strerror(errno));
        // Above NSLog Prints : Error was code: 2 - message: No such file or directory

        NSLog(@"DB PAth : %@",dbPath);
        //Prints "DB Path : /Users/myname/Library/Application Support/iPhone Simulator/6.0/Applications/016E0BD6-E615-4031-A9E4-42E42D863ECB/Library/Documentation/"


        if(sqlite3_open_v2([dbPath UTF8String], &playerDB, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL) == SQLITE_OK)
        {
            char* errorMsg;
            const char* sql_stmt = "CREATE TABLE IF NOT EXISTS PLAYERS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, GAME TEXT, GAME_DESC TEXT, DOB TEXT, IMAGE BLOB);";
            if (sqlite3_exec(playerDB, sql_stmt, nil, nil, &errorMsg) != SQLITE_OK)
            {
                NSLog(@"%s Create Table '%s' (%1d)", __FUNCTION__, sqlite3_errmsg(playerDB), sqlite3_errcode(playerDB));
            }
        }
        else
            NSLog(@"%s Open DB '%s' (%1d)", __FUNCTION__, sqlite3_errmsg(playerDB), sqlite3_errcode(playerDB));
    }
}

不知道哪里出错了。

1个回答

redCoral_
redCoral_   2013.01.22 16:20

别用NSDocumentationDirectory

改为:NSDocumentDirectory

改完之后应该是这样:

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java在指定路径下创建文件,并写入文件内容
package com.io; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter;
ORA-27040: 文件创建错误, 无法创建文件
本人出现这个错误的原因是由于格式问题,注意检查路径是否有多余的空格等。 create tablespace gx logging   datafile ' H:\app\shiyue\oradata\orcl\OU2.dbf'   size 32m   autoextend on   next 32m maxsize2048m   extent manag
iso文件读写函数.docx
iso文件读写函数.创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil
asp.net(c#)的异常处理,StackTrace说明,获得错误位置
利用 Exception 的StackTrace 属性获得错误的文件的位置(文件名,行号),并将错误信息保存在一个.config的文件里,内容有: 如何获取错误 如何获取错误的位置,多层开发时,在类用应用此法方便查错 如保获取站点的绝对路径 如何保存和创建文件 如何在web.config中设置参数及如何访问这个参数 本程序适用于asp.net 新手!
SpringMVC+MyBatis+Maven 完整项目
开发环境STS,项目完整,只需修改数据库连接配置文件即可,数据库表创建文件已给出。
从键盘上输入文件的内容和要保存的文件名称,然后根据输入的名称创建文件,并将内容保存到文件中
从键盘上输入文件的内容和要保存的文件名称,然后根据输入的名称创建文件,并将内容保存到文件中 import java.util.Scanner; import java.io.File; import java.io.OutputStream; import java.io.FileOutputStream; public class ScannerDemo{ public static
Linux文件操作详解(八)--文件的创建和编辑(vi/vim命令和cat命令)
一、vi/vim命令简介 vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且增加了代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。 语法 vi(选项)(参数) 选项 +:从指定行号的行开始先是文本内容; -b:以二进制模式打开
在/sys下面创建属性文件
以前一直有一个疑问:驱动到底在哪里创建文件节点才有意义,才能满足应用层的需求。后来一直得不到解答,慢慢的就不干觉得有困惑。因为android的开发 ,从原厂拿到bsp大多数驱动都已经做好了,功能健全,通过HAL提供本地方法。其实事实还有其他的途径提供驱动接口,比如字符设备,创建一个文件节点, 然后JNI层包装一下节点的操作函数,向java层提供public class;输入设备,上报按键,触摸
Outlook 电子邮件附件时错误信息: " 无法创建文件 "
当您尝试打开或保存电子邮件附件, 可能会收到以下错误信息: 无法创建文件: 文件名 。 右键单击您要创建文件再单击快捷菜单, 检查对该文件夹权限上属性文件夹。 回到顶端 原因 TemporaryInternetFiles 文件夹是存储上您没有权限在服务器上时可能出现此问题。 回到顶端 解决方案 如果正确修改注册表通过使用注册表编辑器或者通过使用其他方法 警告 可能发生
java 创建文件与读写
String rootPath =request.getSession().getServletContext().getRealPath("/");//获取工程根目录(在此基础上可指定子目录) //创建文件 File file = new File(path); if (!file.exists()) {