在Android中编写文件总是失败

时间:2018-03-26 14:44:04

标签: android file

我想在Android中将文本写入文件。我试着写sdcard和内部存储的公共部分。我总是得到FileNotFound异常。我尝试通过Environment.getExternalStorageDirectory().getAbsolutePath()Environment.getExternalStoragePublicDirectory(Enviroment.DIRECTORY_DCIM).getAbsolutePath()获取路径(我认为它不会影响文件不是图片)并且都返回:“storage / emulated / 0”和“storage / emulated /” 0 / DCMI“分别。我也尝试过直接路径“/sdcard/MyFile/output.txt”和“mnt / sdcard / MyFile / output.txt”。我在这个主题中检查了大多数stackoverflow.com的回答,但我只得到了类似于我的代码。 (例如来自here

我的代码示例(我尝试了更多变体):

try {
    File dir = Environment.getExternalStorageDirectory();
    File dir = new File (sdCard.getAbsolutePath() + "/MyFile");
    if (!dir.exists()) {
        dir.mkdirs();
    }
    File file = new File(dir, "output.txt");
    if (!file.exists()) {    
        file.createNewFile();
    } 
    FileOutputStream stream = new FileOutputStream(file);
    stream.write(("some text").getBytes());
    stream.close();
    toast = Toast.makeText(context, "Saving file successful.", Toast.LENGTH_SHORT);
    toast.show();
} catch (Exception e) {
    toast = Toast.makeText(context, Environment.getExternalStorageDirectory().getAbsolutePath(), Toast.LENGTH_SHORT);
    //toast = Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT);
    toast.show();
}

2 个答案:

答案 0 :(得分:1)

你必须设置

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
AndroidManifest.xml文件中的

权限。

如果您在Android 6.0或更高版本上运行应用程序,则必须在运行时请求此权限。

Request App Permissions

答案 1 :(得分:0)

我很抱歉你们所有人都浪费你的时间。问题在于权限设置。 Here是衣服。