2016-08-19 11 views
0

У меня есть вспомогательный класс, который мне нужен для обработки данных для моего приложения.Как я могу записать файл во внутреннюю память Android с помощью opencsv?

Я настроил его так, чтобы он читал файл по URL-адресу. Сам чтение работает, но мне трудно записать этот файл во внутреннюю память приложения.

Согласно учебнику Android, я использовал FileOutputStream для записи файла. Однако мне сложно найти решение для записи FileOutputStream и его разрешения с помощью конструктора CSVWriter.

Код очень долго, так что я опубликую суть, если Вам необходима дополнительная информация о том, что делает мой код, но вот бит, который вызывает у меня проблемы:

BufferedReader in = new BufferedReader(new InputStreamReader(file_url.openStream())); 
      String test; 
      CSVReader reader = new CSVReader(in, ';'); 
      FileOutputStream file_out = app_context.openFileOutput(file_name, Context.MODE_PRIVATE); 
      CSVWriter writer = new CSVWriter(<What goes here?>, ';'); 

https://gist.github.com/anonymous/4cde37a8614d1c69cc03ec678d36a9d7

Исключение выброшен с CSVWriter писателем = новый CSVWriter (String.valueOf (file_out), ';') ;:

08-19 14:22:30.794 29439-30099/com.example.a1003137m.profitgraph W/System.err: java.io.FileNotFoundException: [email protected]: open failed: EROFS (Read-only file system) 
08-19 14:22:30.794 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at libcore.io.IoBridge.open(IoBridge.java:452) 
08-19 14:22:30.794 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:87) 
08-19 14:22:30.794 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:72) 
08-19 14:22:30.794 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at java.io.FileWriter.<init>(FileWriter.java:80) 
08-19 14:22:30.794 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at com.example.a1003137m.profitgraph.FileProcessor.processFile(FileProcessor.java:50) 
08-19 14:22:30.794 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at com.example.a1003137m.profitgraph.FileProcessor.run(FileProcessor.java:40) 
08-19 14:22:30.795 29439-30099/com.example.a1003137m.profitgraph W/System.err: Caused by: android.system.ErrnoException: open failed: EROFS (Read-only file system) 
08-19 14:22:30.795 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at libcore.io.Posix.open(Native Method) 
08-19 14:22:30.795 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
08-19 14:22:30.795 29439-30099/com.example.a1003137m.profitgraph W/System.err:  at libcore.io.IoBridge.open(IoBridge.java:438) 
08-19 14:22:30.795 29439-30099/com.example.a1003137m.profitgraph W/System.err: ... 5 more 
+0

'<Что здесь?>'. Вы пытались 'file_out'? – greenapps

+0

Да, это говорит мне, чтобы он обернул его String.valueOf(), но он выдает исключение. – cmackie21

+0

И вы не собираетесь рассказывать, какой? Не умно! Вывести логарифм. – greenapps

ответ

1

new CSVReader(in, ';'); Теперь in - InputStream. Итак, что бы вы использовали с new CSVWriter(out, ';');? Действительно: OutputStream!. Также для читателя вы использовали BufferedReader и InputStreamReader.

Так что сделайте что-нибудь подобное: BufferedWriter и OutputStreamWriter.

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

  • Нет связанных вопросов^_^