如何在外部存储中创建目录?

时间:2016-06-01 13:19:53

标签: java android file directory

我想在外部存储中创建一个目录,但我无法创建它。

这是我的代码:

 String path = Environment.getExternalStorageDirectory().toString();
    File dir = new File(path,"/appname/media/appimages/");
    if (!dir.isDirectory()) {
        dir.mkdirs();
    }

    File file = new File(dir, "image" + ".jpg");
    String imagePath =  file.getAbsolutePath();
    //scan the image so show up in album
    MediaScannerConnection.scanFile(this,
            new String[] { imagePath }, null,
            new MediaScannerConnection.OnScanCompletedListener() {
                public void onScanCompleted(String path, Uri uri) {

                }
            });


    File file1 = new File(Environment.getExternalStorageDirectory().getPath() + "/MeaVita");

    file1.mkdir();


    //  imageRoot.mkdirs();

    Log.d("directory",dir.getAbsolutePath().toString());

我尝试使用mkdirs()和mkdir()。但它们都不起作用。我无法在路径storage / emulated / 0 /。

中看到该文件夹

我在Android 23.0上运行此操作,我也添加了权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

有人知道我的代码出了什么问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用某些权限,您需要在运行时检查用户是否接受它们,您可以通过创建如下方法来执行此操作:

private void checkFilePermissions() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int hasWriteExternalStoragePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    REQUEST_CODE_ASK_PERMISSIONS);
        }
    }
}

然后在访问存储空间之前使用它

答案 1 :(得分:0)

我检查了..它是一个权限问题..快速解决方案切换到22而不是23.或者您需要处理运行时权限请参阅:link