Как скачать файл в нужную директорию?

Для скачивания файла в определенную директорию в Android вам потребуется выполнить несколько шагов. Опишу их подробно.

1. Убедитесь, что у вас есть разрешение на запись во внешнее хранилище. Для этого вам потребуется добавить соответствующую строку в файл манифеста вашего приложения:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. Создайте метод, который будет осуществлять сам процесс скачивания файла. Ниже приведен пример такого метода, который использует класс HttpURLConnection для загрузки файла по URL и сохраняет его в указанной директории:

public void downloadFile(String fileUrl, String directory) {
    try {
        URL url = new URL(fileUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.connect();

        // Определение имени файла на основе URL
        String fileName = fileUrl.substring(fileUrl.lastIndexOf('/') + 1);

        // Создание директории, если она не существует
        File dir = new File(directory);
        if (!dir.exists()) {
            dir.mkdirs();
        }

        // Создание файла в указанной директории
        File file = new File(dir, fileName);

        InputStream input = new BufferedInputStream(connection.getInputStream());
        OutputStream output = new FileOutputStream(file);

        byte[] data = new byte[1024];
        int count;
        while ((count = input.read(data)) != -1) {
            output.write(data, 0, count);
        }

        output.flush();
        output.close();
        input.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

3. Вызовите метод downloadFile, передав ему URL файла и путь к директории, в которую вы хотите сохранить файл. Например:

String fileUrl = "https://example.com/file.pdf";
String directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();

downloadFile(fileUrl, directory);

Здесь fileUrl - это URL-адрес файла, который вы хотите скачать, а directory - путь к директории, в которую вы хотите сохранить файл. В примере выше мы использовали стандартную директорию "Загрузки" (Downloads) во внешнем хранилище. Однако вы можете выбрать любую другую существующую директорию или создать новую.

Обратите внимание, что код приведен в примере работает в главном (UI) потоке, поэтому для лучшей производительности рекомендуется выполнять его в отдельном потоке или использовать другие подходы для асинхронного скачивания файлов.

Не забудьте также добавить обработку исключений и учесть различные сценарии ошибок, связанных с сетевыми запросами и доступом к файловой системе.