Ответ 1
Вы не должны смотреть в каталог данных. Это системный каталог в хранилище телефона - обычно /data
- и ваше приложение никогда не получит разрешения на его запись.
Каталог, в котором ваше приложение должно записывать файлы, возвращается Context.getFilesDir()
method. Это будет что-то вроде /data/data/com.yourdomain.YourApp/files
.
Если вы хотите записать файл в память телефона, используйте метод Context.openFileOutput()
.
Если вам нужен путь к SDCard, используйте метод Environment.getExternalStorageDirectory()
. Чтобы записать на SDCard, вам необходимо предоставить вашему приложению соответствующие разрешения, добавив в свой манифест следующее:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Если вы собираетесь писать на SDCard, вам также нужно будет проверить его состояние с помощью метода getExternalStorageState()
.
Если вы храните небольшие файлы для своего приложения, они могут войти в память телефона, а не в SD-карту, поэтому используйте методы Context.openFileOutput()
и Context.openFileInput()
.
Итак, в вашем коде рассмотрите что-то вроде:
OutputStream os = openFileOutput("samplefile.txt", MODE_PRIVATE);
BufferedWriter lout = new BufferedWriter(new OutputStreamWriter(os));