无法创建Android Studio文件夹

时间:2019-06-02 22:51:19

标签: java android file

我正在尝试在设备上创建一个文件夹,结果与预期不符。

我在<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>中确实有AndroidManifest.xml

我的代码:

public void saveOnDevice(){
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/hello");
    boolean x = true;
    if (!myDir.exists()) {
        x = myDir.mkdirs();
    }
    if(x) {
        System.out.println("Folder created " + root);
    }
    else{
        System.out.println("Folder not created" + root);
    }
}

结果:

Folder not created /storage/emulated/0

预期:

Folder created /storage/emulated/0

我在我的三星Galaxy S8上尝试了此操作。我没有插入SD卡。我的设备上没有路径/storage/emulated/0。为什么它不起作用?如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您的设备上确实有该文件夹/ storage / emulated / 0。使用三星的文件浏览器时,由于抽象层的原因,您可能看不到它。

您可以使用更高级的文件浏览器(例如FX File Explorer(https://play.google.com/store/apps/details?id=nextapp.fx)进行验证,然后从“系统/”开始查找该路径。

root字符串对您没有帮助。

相反,您想要执行以下操作:

// create folder "myDir" in internal storage as sub directory of /storage/emulated/0
File myDir = new File(Environment.getExternalStorageDirectory(), "myDir");
// create file
File myFile = new File(myDir, "song.mp3");
// get file stream 
FileOutputStream fileStream = new FileOutputStream(myFile);

然后,您只需将歌曲内容写入fileStream

Environment.getExternalStorageDirectory()实际上为您提供了内部存储位置,但在应用目录的外部(例如Android/your.apps.packagename/),这有点令人困惑。