2015-02-08 77 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

相關問題