#java #android #android-studio #file #save
Вопрос:
я упоминал об этом в предыдущих вопросах, в настоящее время я использую общие настройки для хранения некоторых результатов сканирования BLE (RSSI и время сканирования) в приложении. Это работает, и самые последние данные сканирования доступны с помощью кнопки onclick.
На самом деле я хочу, чтобы все сканы хранились в файле, доступном извне из приложения (не путать с внешним хранилищем, таким как SD-карта). Я не использую эмулятор, я использую Samsung galaxy s8 на Android 9. Я просмотрел некоторые учебные пособия, такие как :
https://www.youtube.com/watch?v=ZTYR3FBDus4 (3 минуты)
https://www.youtube.com/watch?v=EcfUkjlL9RI (11 минут)
И мне было интересно, может ли этот «метод onclick FileOutputStream» быть истолкован как хранение всей отсканированной информации, чтобы я мог затем получить доступ через каталог файлов данных?
Я заметил, что в первом примере ссылки показано, что файл доступен через эмулятор в виде файла .txt. Можно ли сделать то же самое при использовании реального устройства Android?
ИЗМЕНИТЬ: Добавление кода выходного потока файла
FileOutputStream fos = null;
try {
fos = openFileOutput(FileName, MODE_PRIVATE);
fos.write(RSSI1);
Toast.makeText(MainActivity.this, "Saved To: " getFilesDir() "/" FileName , Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Новый Код:
//To create file path
File file = new File(Environment.getExternalStorageDirectory(), "Data");
if (!file.mkdirs()){
file.mkdirs();
}
String FilePath = file.getAbsolutePath() File.separator FileName;
//to print data to file in filepath
try {
fileOutputStream = new FileOutputStream(FilePath);
fileOutputStream.write(RSSI1);
Toast.makeText(MainActivity.this, "Directory saved is : " getFilesDir(), Toast.LENGTH_LONG).show();
fileOutputStream.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
Комментарии:
1. Какое приложение(ы) должно иметь доступ к файлу?
2. @blackapps Хорошо, кроме приложения BLE scanner, которое отображает сканирование немедленно, нет. Меня попросили получить данные сканирования для хранения в памяти телефона, а не в приложении, насколько я понимаю.
3. Непонятный. Это то приложение, которое записывает файл? Должен ли файл быть прочитан другим приложением, а не приложением, создавшим файл?
4. Таким образом, приложение BLE scanner (мое единственное приложение) в настоящее время получает и отображает данные из передачи. Эти данные я хочу сохранить (поэтому запишите их в файл с помощью приложения BLE scanner). В идеале этот файл должен храниться таким образом, чтобы его можно было открывать, не используя приложение BLE scanner, поэтому просто файл в доступном хранилище телефонов (например, файл txt на ноутбуке в папке), который позволяет открывать его на телефоне (например, загруженное изображение хранится на телефоне), Делает ли это более понятным?
5. Нет, я не буду болтать. Пожалуйста, поговорите с Андреа об этом ответе.
Ответ №1:
Вы могли бы создать свои собственные каталоги для хранения ваших данных. Если вы не знаете, где хранить файл, чтобы сделать его доступным, самым простым способом должно быть указать, где вы храните файл (например, вы можете открыть проводник файлов, указать путь, по которому вы хотите сохранить файл, и, чтобы закончить, откройте файл OutputStream
)
Я нашел видео, в котором объясняется, как получить путь к файлу через проводник.
Второй способ может заключаться в использовании папки со статическим путем для сохранения всех данных из вашего приложения. Вы можете создать File
, проверить, существует ли он, если нет, вы создадите каталог из корневого каталога, а затем все пользователи откроют проводник для извлечения файла.
Я не знаю, может ли это быть полезно, может быть, я не понял вопроса (так жаль). Извините за мой английский :/
Комментарии:
1. Я понимаю, что ты имеешь в виду! ваша ссылка на видео показывает, как найти путь к файлу в проводнике. Однако я просто хочу записать в проводник, например, файл txt, к которому я могу получить доступ. Это выполнимо?
2. Кроме того, не могли бы вы, пожалуйста, посмотреть мои ссылки в моем вопросе. Было бы это хорошим способом сохранить в проводнике файлов
3.Вы хотите сохранить файл, доступный пользователю? Да, это выполнимо. Что вам нужно сделать, это просто взять путь к местоположению (взятый из проводника файлов или где вы хотите) и поместить его в конструктор
FileOutputStream
. Иногда исследователи файлов возвращаютFile
объект, вы можете передать только его. Здесь вы можете найти некоторые документы: Файл FileOutputStream Примеры файлов FileOutputStream