2015-02-08 75 views
0
java.io.IOException: open failed: ENOENT (No such file or directory) 

这发生在这行代码:ENOENT(没有这样的文件或目录)的数据库文件

File db = getDatabasePath("questions"); 
db.createNewFile();//HERE 

我试图创建一个名为questions.db的数据库文件,这将是空。然后我将从服务器上拉出文件并将其插入。然后我希望能够从sqlite访问数据库。

+0

'我试图用名称questions.db' ** No **创建一个数据库文件。您正试图创建一个名为'questions'的数据库:'File db = getDatabasePath(“questions”);' – 2015-02-08 17:29:55

+0

@DerGolem所以我能做些什么呢? – user4360138 2015-02-08 18:20:08

+0

相反db.createNewFile()的';',我这样做:'最终SQLiteDatabase分贝= \t \t \t ctx.openOrCreateDatabase(DB_NAME,Context.MODE_PRIVATE,NULL);'其中CTX是通过上下文(该代码是在它自己的类,里面的方法) – 2015-02-08 18:23:13

回答

1

您没有显示堆栈跟踪,它可以帮助查明它。但是由于File#createNewFile()没有太大的作用,导致失败的唯一可能原因是(相对)路径包含一个不存在的父目录。 createNewFile()不会创建这些。

你通常写

File db = ... 
db.getParentFile().mkdirs(); 
db.createNewFile(); 

来解决这个问题。 (或使用不同的 - 现有的 - 位置)。

+0

阅读评论中的代码pls .... – user4360138 2015-02-09 12:29:20

+1

“// HERE”? :)我正在谈论函数内部的堆栈细节。但是,我无法想象File#createNewFile()除了丢失的父目录之外还有其他任何失败的原因。您可以打印出'db'来查看它想要创建文件的位置。 – eckes 2015-02-09 20:53:43

相关问题