java .io.FileNotFoundException: ошибка открытия: EISDIR (это каталог) - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь записать звук в моем приложении Piano в студии android, используя MediaRecorder. После поиска ответов о том, как сохранить файл, поскольку getExternalPublicDirectory устарел, поэтому я использовал context.getExternalFilesDir(null).getAbsolutePath();. Теперь, когда я запускаю приложение и нажимаю кнопку записи, я получаю эту ошибку java.io.FileNotFoundException: open failed: EISDIR (Is a directory) в строке mediaRecorder.prepare(); .. Пожалуйста, помогите !!

private void startRecording() throws IOException {

        try {
            String path = context.getExternalFilesDir(null).getAbsolutePath();
            audioFile = new File(path);
        } catch (Exception e) {
            Log.e("Error Tag", "external storage access error " + e.getMessage());
            return;
        }


        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

         mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
         mediaRecorder.setOutputFile(audioFile.getAbsolutePath());

            mediaRecorder.prepare();
            mediaRecorder.start();

1 Ответ

2 голосов
/ 30 мая 2020

Получение java.io.FileNotFoundException: open failed: EISDIR (Is a directory) - это то, что ожидалось, поскольку путь, который вы указываете к setOutputFile(), указывает на каталог , а не на файл для сохранения записанных данных.

Документация ясна,

Устанавливает путь к создаваемому выходному файлу.

Попытайтесь исправить ваш путь,

String dirPath = context.getExternalFilesDir(null).getAbsolutePath();
String filePath = direPath + "/recording";          
audioFile = new File(filePath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...