安卓开发无法创建文件夹
首先在xml添加了两行获得了权限
name="android.permission.WRITE_EXTERNAL_STORAGE"/>
name="android.permission.READ_EXTERNAL_STORAGE"/>
java代码中,获取外部存储,然后创建文件夹,在手机上调试时run窗口打印了create,可是没有打印file.getName(),手机上也找不到test文件夹。
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 222);
mCurrentfilr= Environment.getExternalStorageDirectory();
File file=new File(mCurrentfilr,"test");
if (!file.exists()) { //如果该文件夹不存在,则进行创建
file.mkdirs();//创建文件夹
Log.d("file", "create");
}
//如果该文件夹存在
if (file.exists()) {
Log.d("file", file.getName());
}
参考GPT和自己的思路:
根据你提供的代码和情况描述,我初步判断可能存在以下几个原因导致无法创建文件夹:
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 222);
File file=new File(mCurrentfilr,"/test");
注意,有些情况下由于系统对应用权限的限制,可能无法直接在根目录下创建文件夹,可以尝试在根目录下先创建一个名为"myApp"的文件夹,然后在其中创建test文件夹,具体代码如下:
mCurrentfilr= Environment.getExternalStorageDirectory();
File appDir = new File(mCurrentfilr, "myApp");
if (!appDir.exists()) {
appDir.mkdir();
}
File file = new File(appDir, "test");
if (!file.exists()) {
file.mkdirs();
Log.d("file", "create");
}
if (file.exists()) {
Log.d("file", file.getName());
}
希望以上建议能够帮助你排查问题并解决。
参考GPT和自己的思路:
根据您提供的信息,您已经在xml文件中添加了文件外部存储的权限,并且在Java代码中获取了外部存储的路径,并尝试创建一个名为“test”的文件夹。然而,您发现无法在手机上找到这个文件夹。
可能的原因有以下几点:
权限未被授予。 虽然您在xml文件中声明了外部存储的权限,但您仍需要在运行时请求权限。 您使用了ActivityCompat.requestPermissions()
方法来请求权限,但是我建议您添加一个onRequestPermissionsResult()
方法来处理权限请求的结果,以确保权限已被授权。 如果权限未被授予,则可能会导致无法创建文件夹。
外部存储不可用。您使用Environment.getExternalStorageDirectory()
方法来获取外部存储路径,但是如果外部存储不可用,则可能导致无法创建文件夹。 您可以使用Environment.getExternalStorageState()
方法来检查外部存储是否可用,并进一步处理错误。
文件夹已经存在。您在Java代码中检查文件夹是否存在,如果不存在则创建。 但是,如果该文件夹已经存在,则不会再次创建。 您可以使用file.isDirectory()
方法检查文件夹是否已存在,并进行相应的处理。
请检查以上三点,并尝试重新运行您的应用程序来查看结果。 如果问题仍然存在,请提供更多关于应用程序环境和任何错误消息的详细信息,以便更好地帮助您解决问题。
是不是targetsdk设置的30,Android11不能直接操作file文件了,可以修改一下根目录的路径, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/包名"
或者在application节点增加属性android:requestLegacyExternalStorage="true"
不知道你这个问题是否已经解决, 如果还没有解决的话: