2015-07-08 3 views
0

Я борюсь с этим файлом записи, который я буду использовать для сохранения двойных чисел (число + "\ n" Я хочу иметь номер для строки). У меня есть аналогичный код, который работает с OutputStream вместо FileWriter, но OutputStream переопределяет последний номер.Android Studio: Write (FileNotFoundException)

С 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) 

Это writecode:

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"); 

и в журнале кошки у меня есть эта ошибка:

 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

+0

Вы добавили разрешение в свой манифест? –

+0

@PrerakSola этот код: ? –

ответ

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(); 
    } 
} 
+0

Что я должен писать вместо контекста? –

+0

Вам нужно получить контекст приложения. Ваш 'writeMyArray()' находится в каком классе? Расширяет ли этот класс 'Activity'? –

+0

Это в MainActivity и расширяет ActionBarActivity –

Смежные вопросы