Android - java.io.FileNotFoundException:/storage/emulated/0/Notes/File.txt:open failed:ENOENT(没有这样的文件或目录)

时间:2017-04-29 14:22:26

标签: java android bufferedreader readfile filenotfoundexception

我发现很多主题都有同样的问题,但他们无法解决我的问题。 我最初写一个文件如下:`

File root = new File(Environment.getExternalStorageDirectory(), "Notes");
    if (!root.exists()) {
        root.mkdirs();
    }
    File notefile = new File(root, sFileName);
    FileWriter writer = null;
    try {
        writer = new FileWriter(notefile);
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    try {
        writer.append(sBody);
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    try {
        writer.flush();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    try {
        writer.close();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

不要担心try和catch块,我稍后会清除它们:D。 这是应该在同一目录中工作的读者(SD卡的“注释”,如果它不存在,将被创建),读取文件,并将其放在Notify上,如你所见:`

File root = new File(Environment.getExternalStorageDirectory(), "Notes");
    if (!root.exists()) {
        root.mkdirs();
    }

    File file = new File(root, "Nota.txt");


    //Read text from file
    text = new StringBuilder();

    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
            text.append(line);
            text.append('\n');
        }
        br.close() ;
    }catch (IOException e) {
        e.printStackTrace();
    }

我真的不明白为什么我会遇到这个问题,我甚至尝试使用

getExternalStorageDirectory().getAbsolutePath() 

但没有成功。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

当您执行以下操作时,您已尝试使用调试器进行检查:

File root = new File(Environment.getExternalStorageDirectory(), "Notes");
if (!root.exists()) {
    root.mkdirs();
}

我不认为它会在您编写文件时创建文件夹

答案 1 :(得分:0)

要在外部存储中写入文件, 您需要启用WRITE_EXTERNAL_STORAGE权限。

为什么要尝试在外部存储中写入文件?

我的意思是,如果你想这个文件为您的应用程序的唯一手段,使用context.getExternalDirs()让您的应用' S沙盒,它不'吨需要写权限,上面的Android 4.2(果冻豆)。

如果您想将文件分享给其他应用,那么您就可以做正确的工作。

在编写文件之前,请检查外部存储是否以编程方式挂载。

答案 2 :(得分:0)

解决了问题

我使用了Android的SharedPreferences。 我将数据存储在MainActivity中,并按照以下方式接收我的类:

  • MainActivity

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = prefs.edit(); editor.putString(" string_id",InputString); // InputString:来自EditText editor.commit();

  • 在我的班级中获取我的数据

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String data = prefs.getString(" string_id"," no id"); //没有id:默认值

.android.com /参考/机器人/内容/ SharedPreferences.html