【问题标题】:False returned for File exists(); when it does Android internal storage为 File exists() 返回 False;什么时候做Android内部存储
【发布时间】:2016-06-20 00:41:51
【问题描述】:

片段内部

    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?

【问题讨论】:

    标签: java android sqlite android-emulator


    【解决方案1】:

    您正在创建一个名为 "savedDuties" 的数据库。您正在尝试访问名为 "SavedDuties.db" 的数据库的文件。这些不一样。

    【讨论】:

    • 当然,您正在创建savedDuties 并寻找SavedDuties.db,两个字符串必须相同才能获得结果true
    • 盯着那个看了好几个小时。甚至没有注意到小写/大写的 S. Kudos
    【解决方案2】:

    这可能是由于权限造成的。

    这也可能是文件路径结构错误的问题,请尝试改用:databaseFile.getAbsoluteFile().exists()

    【讨论】:

    • 读取/写入内部文件系统是否需要权限?我以为只需要外部
    猜你喜欢
    • 2018-06-14
    • 2015-08-09
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多