Я создаю приложение, которое запрашивает специфичный для приложения файл, который я назвал, например, " conf.cfg ".этот файл должен быть прочитан моим приложением, чтобы создать какой-то объект и т. д. ... тело файла выглядит так:
#activation, level, type, regex or array
0, "critic", 0,"\\d{4}\\w\\d{3}"
1, "critic", 1, [word1,word2]
1,"minor", 0,"\\d{2}-\\w{3}-\\d{4}\\s?\\/?\\s?\\d{2}:\\d{2}"
Проведя исследование, я обнаружил, что есть дваТип хранилища в Android:
- Внутреннее хранилище:
Внутреннее хранилище лучше всего, когда вы хотите быть уверены, что ни пользователь, ни другие приложения не смогут получить доступ к вашемуфайлы.
Внешние хранилища:
Внешнее хранилище - лучшее место для файлов, которые не требуют ограничений доступа, и для файлов, которыми вы хотите поделиться с другими приложениями или разрешить пользователю доступс компьютером.
Поскольку я хочу, чтобы пользователь мог редактировать / загружать / загружать / ИСПОЛЬЗОВАТЬ этот файл, внешнее хранилище выглядит какхороший выбор.Однако на Developper Android они сказали:
Внимание: внешнее хранилище может стать недоступным, если пользователь извлекает SD-карту или подключает устройство к компьютеру.И файлы все еще видны пользователю и другим приложениям, которые имеют разрешение READ_EXTERNAL_STORAGE.Поэтому, если функциональность вашего приложения зависит от этих файлов или вам необходимо полностью ограничить доступ, вам следует вместо этого записать свои файлы во внутреннее хранилище.
Внимание: файлы на внешнем хранилище не всегда доступны, поскольку пользователи могут смонтироватьвнешнее хранилище для компьютера для использования в качестве запоминающего устройства.Поэтому, если вам нужно хранить файлы, которые важны для функциональности вашего приложения, вы должны вместо этого хранить их во внутренней памяти.
Поскольку этот файл должен быть всегда доступным и является критически важно для функциональности моего приложения Итак ... Внутреннее хранилище кажется лучше.Но мне нужно, чтобы пользователь увидел и смог использовать файл.И вот я застрял.
У кого-нибудь есть идеи, где и как поместить / создать этот файл?
РЕДАКТИРОВАТЬ: следующий ответ @greenapps
Вот кусок кода, который я написал.Я использую команду getExternalFilesDir(null)
для записи и сохранения моего файла
String folderName = "Innovation";
String confFileName = "conf.txt";
String commentSymbol = "#";
String commentLine = commentSymbol + " activation, level, type , regex or array";
File storage = getExternalFilesDir(null);
File folder = new File(storage, folderName);
File conf = new File(folder, confFileName);
Log.d(TAG, "Folder action!");
if (!folder.exists()) {
if (folder.mkdirs()) {
Log.d(TAG, "Created : " + folder.getAbsolutePath());
} else {
Log.e(TAG, "folder not created!");
}
}
Log.d(TAG, "File action!");
if (!conf.exists()) {
try {
Log.d(TAG, "opening...");
FileOutputStream fos = new FileOutputStream(conf);
fos.write(commentLine.getBytes());
fos.close();
Log.d(TAG, "Created : " + conf.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
}
if (conf.exists()) {
Log.d(TAG, "File exist at : " + conf.getAbsolutePath());
}
файл создан, как показано в последнем журнале
Создано: / storage / emulated / 0/Android/data/com.aralex.innovation/files/Innovation/conf.txt
Но когда я ищу файл с помощью собственного приложения для просмотра файлов телефона, я не могу его найти.Я могу перейти в папку с файлами, но папка «Инновация /» скрыта.
Это проблема, потому что я хочу, чтобы файл был виден.
Телефон: Samsung s7, s7edge, s9 +
Файл по умолчаниюЗначок Проводника
Открыт Проводник по умолчанию