Для сохранения Uri в директории приложения вам следует выполнить следующие шаги:
1. Получите доступ к директории для сохранения. Обычно разработчики используют публичную директорию для сохранения файлов приложения. Для этого вы можете использовать метод getExternalFilesDir()
, который возвращает директорию приложения, доступную для сохранения файлов.
File directory = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
Директория будет возвращена в виде объекта типа File
.
2. Убедитесь, что у вашего приложения есть разрешение на запись во внешнее хранилище. Добавьте следующую строку в файл AndroidManifest.xml
:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Без этого разрешения ваше приложение не сможет записывать файлы на внешнее хранилище.
3. Создайте новый файл в указанной директории. Используйте метод createNewFile()
для создания нового файла.
File file = new File(directory, "myFile.txt"); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); }
4. Получите доступ к OutputStream
, чтобы записать данные в файл. Для этого необходимо использовать класс FileOutputStream
.
FileOutputStream fileOutputStream = null; try { fileOutputStream = new FileOutputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); }
5. Теперь вы можете использовать OutputStream
, чтобы записать данные из Uri
в ваш файл. Для этого вам нужно считать данные из Uri
и записать их в OutputStream
. Ниже приведен код, который демонстрирует это действие:
InputStream inputStream = null; try { inputStream = getContentResolver().openInputStream(uri); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { fileOutputStream.write(buffer, 0, bytesRead); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (inputStream != null) { inputStream.close(); } if (fileOutputStream != null) { fileOutputStream.close(); } } catch (IOException e) { e.printStackTrace(); } }
Обратите внимание, что вам необходимо закрыть InputStream
и OutputStream
после завершения операций чтения и записи.
6. В результате у вас должен быть сохраненный файл по указанному пути в директории вашего приложения. Вы можете использовать этот файл для дальнейшего использования в своем приложении.
String filePath = file.getAbsolutePath();
Это подробное объяснение показывает основные шаги сохранения Uri
в директории приложения в Android.