Android 创建文件/将文件写入外部存储器

Android 创建文件/将文件写入外部存储器,android,Android,我正在尝试在Android中创建并写入外部文件。我的最小SDK是14,目标SDK是18。我在清单的正确位置拥有写入外部存储权限。以下是我创建并设置要创建文件的文件路径的步骤: String state = Environment.getExternalStorageState(); if(!state.equals(Environment.MEDIA_MOUNTED)) { textView.setText("No external storage mounted

我正在尝试在Android中创建并写入外部文件。我的最小SDK是14,目标SDK是18。我在清单的正确位置拥有写入外部存储权限。以下是我创建并设置要创建文件的文件路径的步骤:

    String state = Environment.getExternalStorageState();
    if(!state.equals(Environment.MEDIA_MOUNTED)) {
        textView.setText("No external storage mounted");
    } else {
        File externalDir = Environment.getExternalStorageDirectory();
        File dir = new File(externalDir.getAbsolutePath() + "/tests-folder");
        dir.mkdir();
        if(!dir.exists()) {
            Log.i(null, "Does not exist"); // This gets printed - Why?      
        }
        File textFile = new File(dir, "test.txt");
        try {
            writeTextFile(textFile, "This is a test!");
            String text = readTextFile(textFile);
            textView.setText(text);
        } catch (IOException ex){
            textView.setText("Something went wrong!" + ex.getMessage());
        }
    }
我一直在犯错误“出了点问题/存储/sdcard0/tests文件夹/test.txt:open失败:enoint(没有这样的文件或目录)。writeTextFile()方法是:

private void writeTextFile(File file, String text) throws IOException {
    BufferedWriter writer = new BufferedWriter(new FileWriter(file)); // When I debug, it comes up until here and then returns with the exception
    writer.write(text);
    writer.close();
}
当它到达writeTextFile()方法的第一行时,代码返回一个异常。我的猜测是这些文件没有被创建。打印日志行“不存在”。为什么会这样?我用手机和模拟器都试过了。安装和检查后,我尝试断开手机的连接,但没有用


如果修改文件路径以在外部目录的根文件夹中创建文件,则会出现EACCES权限拒绝错误

您确定路径中的
SD卡
0
之间没有丢失一个
/

我发现了问题所在-看起来这个特定文件要么损坏了什么,要么触发了一些奇怪的错误。我在同一文件夹中的不同包中创建了另一个名称不同的活动,效果很好(代码是复制粘贴的,因此没有任何更改)。然后我删除了这个文件并重新创建了它,它工作得很好。不知道为什么会发生这样的事,但是把它放在那里,以防万一将来有人遇到这种情况


在此之前,我创建了一个单独的项目,并输入了相同的代码,结果成功了。因此,我回来尝试通过Eclipse执行一个项目->清理,但也不起作用。

您可以尝试使用
dir.mkdirs()
如果路径不存在,它将创建整个路径,而不仅仅是文件夹。我尝试了这两种方法-无效。没有“/”-sdcard0是一个术语