Выдает FileNotFoundException, хотя путь к файлу верен

96
23 марта 2021, 09:10
    public void createDB() {
        try {
            File file = new File("C:\\Users\\gleba\\AndroidStudioProjects" +
                    "\\EnglishLearningApp\\app\\src\\main\\java\\entities\\data_base.txt");
            FileInputStream fstream =
                    new FileInputStream(file);
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fstream));
            String oneWord;
            while ((oneWord = bufferedReader.readLine()) != null) {
                oneWord.trim();
                String
                        en = "",
                        rus = "",
                        transcription;
                transcription = oneWord.substring(oneWord.indexOf('['), oneWord.indexOf(']') + 1);
                int numberOfStart = 0;
                for (int i = 0; i < oneWord.length(); i++) {
                    if ((int) oneWord.charAt(i) >= 97 &&
                            (int) oneWord.charAt(i) <= 122) {
                        numberOfStart = i;
                        break;
                    }
                }
                for (int i = numberOfStart; oneWord.charAt(i) >= 97 &&
                        oneWord.charAt(i) <= 122; i++) {
                    en += oneWord.charAt(i);
                }

                for (int i = 0; i < oneWord.length(); i++) {
                    if ((int) oneWord.charAt(i) >= 'а' &&
                            oneWord.charAt(i) <= 'я' || oneWord.charAt(i) == ' ' || oneWord.charAt(i) == ',') {
                        rus += oneWord.charAt(i);
                    }
                }
                rus.trim();
                Word word = new Word(en, rus, transcription);
                data_base.add(word);
            }
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFound_-_");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("IOE_-_");
            e.printStackTrace();
        }
    }

Данный метод считывает построчно таблицу английских слов с переводом и транскрипцией. Но почему-то AndroidStudio не видит этот файл, хотя он лежит в той же директории, что и данный класс. В Intelegent idea этот код работает полностью как надо(

Answer 1

Программа выполняется не студией, а Android на эмуляторе или устройстве, которое, как уже сказали, не имеет доступа к файлам на ПК. Также, в Android своя файловая система, в которой файлы программы или пользователя могут располагаться далеко не в любой папке.

По хорошему, Вам нужно поместить Ваш файл в ресурсы (например в assets) приложения и уже оттуда читать.

Вот хорошие статьи по работе с ресурсами и assets.

READ ALSO
Вставить файл в форму

Вставить файл в форму

У меня есть blob, и мне необходимо добавить его к форме чтобы при отправке формы этот файл тоже отправился на сервер

114
Как сделать объект &ldquo;твёрдым&rdquo; | Баги с картой уровня

Как сделать объект “твёрдым” | Баги с картой уровня

Когда-то давно я нашёл, дескать, "самую сложную игру" ( http://caniplayru/flash/4565 ), и вот, спустя несколько лет, решил сделать что-то подобное, только не шибко...

291
Как поступить с центровкой элементов?

Как поступить с центровкой элементов?

В общем ситуация как обычно

108