【问题标题】:Unable to create a folder in internal storage on android 6.0+无法在 android 6.0+ 上的内部存储中创建文件夹
【发布时间】:2018-08-17 21:36:49
【问题描述】:

我首先尝试在外部目录中创建一个文件夹

Environment.getExternalStorageDirectory()

在我的 AndroidManifest.xml 中,我有这两行,所以一切都应该没问题。

android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE

但现在我知道,您每次安装应用程序时都必须询问用户是否允许,如果他不给我权限,我的应用程序将无法运行。

所以我知道,您不需要在内部存储中写入权限。 所以我使用了命令

getApplicationContext().getFilesDir()

读取/写入存储。 但它不适用于 Android 6.0 或更高版本的设备。 我创建文件的代码是

String mainPath = getApplicationContext().getFilesDir().getAbsolutePath() + "//testFile/";
    File dir = new File(mainPath);

    if(!dir.exists())
    {
        dir.mkdir();

        Intent i = new Intent(getApplicationContext(),MainActivity.class);
        startActivity(i);
    } else { }

每次运行应用程序时,我都会进入 else{ } 部分,但我不知道为什么。 如果你能帮助我,那就太好了。

谢谢!

【问题讨论】:

  • My code for creating the file is。这不会创建文件而是创建目录。
  • i get into the else{ } part and i have no idea why. 那么目录已经存在了。
  • 对不起,我写错了......每次我运行应用程序时,!dir.exists() 都是真的。在我的应用程序中,此代码重复多次以检查是否存在目录,但每次我进入 if 部分时,它应该创建目录,但在未创建文件时执行其他代码跨度>
  • while the file isn't created – ??????
  • 进一步没有其他代码。你是什​​么意思?解释会发生什么有那么难吗?

标签: java android path storage internal-storage


【解决方案1】:

表示文件存在。如果文件不存在,请创建该文件,然后开始您的活动。

if(!dir.exists()){
    dir.mkdir();
}

Intent i = new Intent(getApplicationContext(),MainActivity.class);
startActivity(i);

【讨论】:

  • 对不起,我写错了......每次我运行应用程序时,!dir.exists() 都是真的。在我的应用程序中,此代码重复多次以检查是否存在目录,但每次我进入 if 部分时,它都应该创建目录,而是在未创建文件时执行其他代码跨度>
【解决方案2】:

创建文件对象不会创建目录。为此,您需要致电dir.mkdirs()

另外,获取文件的正确方法是File dir = new File(getApplicationContext().getFilesDir, "testFile"); 这样您就不需要假设分隔符或进行字符串操作

【讨论】:

  • 但它适用于我的 Android 5.0 手机,但不适用于 8.0 手机:/
猜你喜欢
  • 1970-01-01
  • 2014-04-17
  • 2020-11-17
  • 2016-07-21
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
相关资源
最近更新 更多