Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在android 6.0+;上的内部存储中创建文件夹;_Java_Android_Path_Storage_Internal Storage - Fatal编程技术网

Java 无法在android 6.0+;上的内部存储中创建文件夹;

Java 无法在android 6.0+;上的内部存储中创建文件夹;,java,android,path,storage,internal-storage,Java,Android,Path,Storage,Internal Storage,我首先尝试在外部目录中创建一个文件夹 Environment.getExternalStorageDirectory() 在我的AndroidManifest.xml中,我有这两行代码,所以一切都应该正常 android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_EXTERNAL_STORAGE 但现在我知道,每次用户安装应用程序时,你都必须询问他们的权限,如果他不给我权限,我的应用程序将无法运行 所以我知道,在内部存

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

Environment.getExternalStorageDirectory()
在我的AndroidManifest.xml中,我有这两行代码,所以一切都应该正常

android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE
但现在我知道,每次用户安装应用程序时,你都必须询问他们的权限,如果他不给我权限,我的应用程序将无法运行

所以我知道,在内部存储器中写入内容不需要许可。 所以我用了命令

getApplicationContext().getFilesDir()
对存储器进行读/写操作。 但它在安卓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{}部分,我不知道为什么。 如果你能帮助我,那就太好了


谢谢大家!

表示该文件存在。如果文件不存在,请创建该文件,然后启动活动

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

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

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


另外,获取文件的正确方法是
File dir=new File(getApplicationContext().getFilesDir,“testFile”)
这样你就不需要使用分隔符或进行字符串操作了

,但它在我的Android 5.0手机上有效,但在8.0手机上无效:/抱歉,我写错了。。。每次我运行应用程序时!dir.exists()为true。在我的应用程序中,此代码重复多次以检查是否存在目录,但每次我进入if部分时,它都应该创建目录,但在未创建文件时执行其他代码我创建文件的代码是。这不是创建一个文件而是一个目录。
我进入了else{}部分,我不知道为什么那么目录已经存在了。对不起,我写错了。。。每次我运行应用程序时!dir.exists()为true。在我的应用程序中,此代码重复多次以检查是否存在目录,但每次我进入if部分时,它都应该创建目录,但在未创建文件时执行其他代码,而在未创建文件时执行其他代码–???此外,没有其他代码。什么意思?有那么难解释发生了什么吗?