Java Android创建目录

Java Android创建目录,java,android,directory,android-sdcard,Java,Android,Directory,Android Sdcard,我正在尝试在Android设备SD卡的下载目录中创建一个文件夹。我已经在清单中声明了 这是我的密码: String state = Environment.getExternalStorageState(); if (!Environment.MEDIA_MOUNTED.equals(state)) { Log.e("file writer", "Directory not writeable"); Toast.makeText(this, "Not wr

我正在尝试在Android设备SD卡的下载目录中创建一个文件夹。我已经在清单中声明了

这是我的密码:

String state = Environment.getExternalStorageState();
    if (!Environment.MEDIA_MOUNTED.equals(state)) {
        Log.e("file writer", "Directory not writeable");
        Toast.makeText(this, "Not writeable.",
                Toast.LENGTH_SHORT).show();
    }

    File dir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_DOWNLOADS), "myfolder");
    dir.mkdirs();
    if (!dir.mkdirs()) { Log.e("file writer", "Directory not created"); }
我收到“未创建目录”错误,显然没有我想要的文件夹。

您尝试过这个吗

String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)) {
    Log.e("file writer", "Directory not writeable");
    Toast.makeText(this, "Not writeable.",
            Toast.LENGTH_SHORT).show();
}else{

File dir = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_DOWNLOADS), "myfolder");
dir.mkdirs();
if (!dir.mkdirs()) { Log.e("file writer", "Directory not created"); } }

要在Android 6+中获得权限,您应该询问用户,试试这个

        if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        // Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)) {
            // Show an expanation to the user *asynchronously* -- don't block this thread waiting for the user's response! After the user sees the explanation, try again to request the permission.
        } else {
            // No explanation needed, we can request the permission.
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_WRITE_STORAGE);
            // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an app-defined int constant. The callback method gets the result of the request.
        }
    }
试试这个代码

 File rootPath = new File(Environment.getExternalStorageDirectory(), "Download/myfolder");
 if (!rootPath.exists())
        rootPath.mkdirs();

希望它能起作用

如果你在安卓6.0上运行应用程序,那么你也必须请求运行时权限,而且运行时权限应用于安卓6+,而不是7+,我想你一定是对的。完全相同的代码在我的Android 5.1测试设备上工作,但在运行6.0.1的设备上不工作