Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Куда сохраняется файл?

Скажите пожалуйста куда сохраняется файл? Звучит конечно глупо, но даже поиск мне не может дать результатов, а если воспользоваться функцией чтения, то он берёт из не понятно от-куда файл, а точнее текст o_O
P.S. Если надо, то приложение запускаю на Samsung S6 Edge.
P.S.S. filename при чтении и записи один и тот же.
void writeFile(String filename, String text) { try { // отрываем поток для записи BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( openFileOutput(filename, MODE_PRIVATE))); // пишем данные bw.write(text); // закрываем поток bw.close(); //Log.d(LOG_TAG, "Файл записан"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
String readFile(String filename) { try { // открываем поток для чтения BufferedReader br = new BufferedReader(new InputStreamReader( openFileInput(filename))); String str = ""; // читаем содержимое while ((str = br.readLine()) != null) { return str; //Log.d(LOG_TAG, str); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
UPD :
static void writeFile(String filename, String text) { try { FileOutputStream fos = new FileOutputStream(filename); Writer out = new OutputStreamWriter(fos, "UTF8"); out.write(text); out.close(); } catch (IOException e) { e.printStackTrace(); } }
String readFile(String filename) { try { // открываем поток для чтения FileInputStream fis = new FileInputStream (new File(filename)); String str = ""; // читаем содержимое str = fis.toString(); fis.close();
return str; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
Чтение :
readFile(getExternalStorageDirectory()+"/hello.txt");
Запись :
writeFile(getExternalStorageDirectory()+"/hello.txt","Привет :D");
Ошибка :
java.io.FileNotFoundException: hello.txt: open failed: EROFS (Read-only file system)


Ответ

Не забудь в манифесте прописать права для работы с внешним хранилищем.
...
Каталог вашего приложения во внутренней памяти указывается с использованием имени пакета приложения в определенном месте файловой системы Android. Технически другое приложение может прочитать ваши файлы во внутренней памяти, если вы установите для файлов режим Readable (доступно для чтения). Однако для этого другому приложению должны быть известны имя пакета вашего приложения и имена файлов. Другие приложения не могут просматривать внутренние каталоги вашего приложения и не имеют разрешений на чтение или запись, если вы специально не установите для своих файлов режим Readable (доступно для чтения) или Writable (доступно для записи). Следовательно, пока вы будете использовать режим MODE_PRIVATE для своих файлов во внутренней памяти, они будут недоступны другим приложениям.
Вот тут про хранилища все написано: https://developer.android.com/training/basics/data-storage/files.html

Комментариев нет:

Отправить комментарий