Каталог Data не имеет никакого разрешения чтения-записи в Android

Я использую 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());
        }
    }
22
задан Phillip 26 December 2013 в 17:45
поделиться

1 ответ

Вам не стоит смотреть на каталог данных. Это системный каталог в хранилище телефона - обычно /данные - и у вашего приложения никогда не будет разрешения на запись в него.

Каталог, в который ваше приложение должно записывать файлы, возвращается методом 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));
69
ответ дан 29 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: