Я использую Android 1.5, мой каталог данных не имеет полномочий чтения-записи
System.out.println("DAta can write??--->"+Environment.getDataDirectory().canWrite());
System.out.println("DAta can read??--->"+Environment.getDataDirectory().canRead());
Поэтому предложите меня, как предоставить полномочия для каталога данных.
То, что я пытаюсь сделать, должно создать файл и добавить некоторое содержание к нему в Хранении данных эмулятора как как ниже
private void writeToSDCard() {
try {
File lroot = Environment.getDataDirectory();
if (lroot.canWrite()){
File lfile = new File(lroot, "samplefile.txt");
FileWriter lfilewriter = new FileWriter(lfile);
BufferedWriter lout = new BufferedWriter(lfilewriter);
lout.write("XXXXXXXXXXXXXXXXXX");
lout.close();
}
} catch (IOException e) {
Log.e(m_cTAG, "Could not write file " + e.getMessage());
}
}
Вам не стоит смотреть на каталог данных. Это системный каталог в хранилище телефона - обычно /данные
- и у вашего приложения никогда не будет разрешения на запись в него.
Каталог, в который ваше приложение должно записывать файлы, возвращается методом Context.getFilesDir()
. Это будет что-то вроде /данные/данные/ком.yourdomain.YourApp/files
.
Если вы хотите записать файл в хранилище телефона, используйте Context.openFileOutput()
метод.
Если вы хотите указать путь к SDCard, то используйте Environment.getExternalStorageDirectory()
метод. Для записи на SDCard вам нужно дать вашему приложению соответствующие разрешения, добавив в Manifest:
<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));