Java ошибка ENOENT (нет такого файла или каталога) - PullRequest
0 голосов
/ 25 февраля 2020

Я работаю над приложением, которое позволяет мне искать файл внутри устройства с помощью открытого файлового менеджера, а затем сохранять данные в Sqlite. Сначала у меня есть кнопка, которая ищет файлы .txt.

Local.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {

                        buscarArchivo = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                        buscarArchivo.addCategory(Intent.CATEGORY_OPENABLE);
                        buscarArchivo.setType("text/*");
                        startActivityForResult(buscarArchivo, 10);
                    }
                });

Я получаю путь к файлу, а затем отправляю его методу readFile (), который отвечает за поиск файла и сохранение данных.

     Uri uri = data.getData();
     String path = uri.getPath();
     path = path.substring(path.indexOf(":") + 1);

     String[] texto = leerArchivo(path);

метод, который получает путь и отвечает за чтение файла

private String[] leerArchivo(String path) throws FileNotFoundException {

        InputStream inputStream = new FileInputStream(Environment.getExternalStorageDirectory() + "/" + path);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

        try {
            int i = inputStream.read();
            while (i != -1) {
                byteArrayOutputStream.write(i);
                i = inputStream.read();
            }
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return byteArrayOutputStream.toString().split("\n");
    }

Но во время запуска приложения и выбора файла генерируется следующая ошибка

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Probando.txt: open failed: ENOENT (No such file or directory)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)

1 Ответ

0 голосов
/ 25 февраля 2020

Вы проверили, правильный ли путь? Возможно, эта строка

path = path.substring(path.indexOf(":") + 1);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...