Android Studio:写入(FileNotFoundException)

时间:2015-07-08 08:24:39

标签: java android android-studio

我正在努力使用这个写文件来保存双数字(数字+" \ n"我希望有一个数字用于行)。我有一个类似的代码,使用OutputStream而不是FileWriter,但OutputStream覆盖最后一个数字。

使用FileWritter我不创建文件,查看logcat:

07-08 08:44:08.316    3076-3076/com.example.emilio.notification W/System.err﹕ java.io.FileNotFoundException: test3.txt: open failed: EROFS (Read-only file system)

这是写代码:

    private void writeMyArray(double rate) {

    try{
        FileWriter fileWritter = new FileWriter("test3.txt");
        BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
        bufferWritter.write(Double.toString(rate)+"\n");
        Log.i("MyActivity", "a rate é:" + rate);
        bufferWritter.close();

    }catch(IOException e){
        e.printStackTrace();
    }
}

如何创建文件,因为它将位于设备的内部存储器内。

我做了一项研究,我发现了一个与我的问题相同但没有正确答案的问题。我试过这个:

PrintWriter fileWritter = new PrintWriter(new File(this.getFilesDir(), "testfile.txt"), "UTF-8");

并且在log cat中我有这个错误:

     07-08 09:17:04.005  16463-16463/com.example.emilio.notification      W/System.err﹕ Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
有人可以帮忙吗?抱歉我的英文不好

PS:我在本文档中没有看到任何符合我的代码的内容:http://developer.android.com/training/basics/data-storage/files.html

1 个答案:

答案 0 :(得分:0)

我没有测试过这段代码,但您可以尝试一下:

private void writeMyArray(double rate) {

    try{
        String filename = "test3.txt";
        File file = new File(context.getFilesDir(), filename);

        FileWriter fileWritter = new FileWriter(file, true);
        BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
        bufferWritter.write(Double.toString(rate)+"\n");
        Log.i("MyActivity", "a rate é:" + rate);
        bufferWritter.close();

    }catch(IOException e){
        e.printStackTrace();
    }
    catch(NullPointerException e){
        e.printStackTrace();
    }
}