调用存在于目录中总是在android中返回false

时间:2017-08-09 11:35:16

标签: java android

我正在尝试为我的应用在内部存储中创建一个目录。以下是我用来检查目录是否存在的代码。如果该目录已存在,则返回该目录;否则,创建并返回目录。但即使在后续的方法调用中,对目录的exists()调用也总是返回false。是什么原因?谢谢

public File getMessageVoiceDirectory() {
    File messageVoiceDirectory = this.myContext.getDir("Voice",Context.MODE_PRIVATE);


    if (messageVoiceDirectory.exists() == false) {
        messageVoiceDirectory.mkdirs();
    }


    return messageVoiceDirectory;
}

3 个答案:

答案 0 :(得分:0)

首先关闭,将条件切换为

if (!messageVoiceDirectory.exists()) {
    boolean actuallyCreated = messageVoiceDirectory.mkdirs();
    if (!actuallyCreated){
       Log.e("Activity", "Woah... the mkdirs command got called, but was not successful. We need to investigate.");
    }
}

接下来,您需要检查mkdirs的返回值。据推测,目录尚未创建。如果您没有正确的权限,可能会发生这种情况。

答案 1 :(得分:0)

你可以尝试这个。它会起作用

 File path = new File(this.getFilesDir(), "DirectoryName");
     if (!path.exists()) {
         path.mkdirs();
         Toast.makeText(this,"Created",Toast.LENGTH_LONG).show();
     }
     else
         Toast.makeText(this,"Already Exist",Toast.LENGTH_LONG).show();

答案 2 :(得分:0)

当你正好打电话给getMessageVoiceDirectory()时,请确保你在onCreate(),

内打电话