2016-03-06 27 views
0

內部片段False返回File exists();當它的Android內部存儲

SQLiteDatabase savedDutiesDB = null; 


    public void createDatabase() { 

     try{ 


      savedDutiesDB = getActivity().openOrCreateDatabase("savedDuties",Context.MODE_PRIVATE, null); 


      savedDutiesDB.execSQL("CREATE TABLE IF NOT EXISTS storedDuties " + 
           "(dutyBookName VARCHAR, dayOfTheWeek Int, pageNumber Int);"); 


      File databaseFile = getActivity().getApplicationContext().getDatabasePath("SavedDuties.db"); 
      Log.d("TCB","path:" + databaseFile); 



    // Check if the database exists 
     if (databaseFile.exists()) { 
          Log.d("TCB","database Created"); 

         } else { 
          Log.d("TCB","Missing:" + databaseFile);  
         } 

        } 

        catch(Exception e){ 

         Log.e("TCB", "Error: "+e); 

        } 


       } 

中註銷

d/TCB:路徑:/data/data/com.domain.appName/databases/SavedDuties.db
d/TCB:缺少:/data/data/com.domain.appName/databases/SavedDuties.db

但該文件確實存在,我可以在Android設備監視器看到它,我可以寫它。

爲什麼這會返回false?

回答

3

您正在創建一個名爲"savedDuties"的數據庫。您正嘗試訪問名爲"SavedDuties.db"的數據庫的文件。那些不一樣。

+1

當然,您正在創建'savedDuties'並尋找'SavedDuties.db',兩個字符串必須相同才能得到'true'結果。 – Omkar

+1

一直盯着那幾個小時。甚至沒有注意到較低/大寫的S. Kudos – RyanTCB

0

這可能是由於權限。

這也可能是錯誤構建的文件路徑的問題,請嘗試使用:databaseFile.getAbsoluteFile().exists()

+0

是否需要讀取/寫入內部文件系統的權限?我以爲只是外部需要 – RyanTCB