Я пытаюсь скопировать текст из файла .txt в jtextarea, но получаю исключение с нулевым указателем

Каждый раз, когда я пытаюсь прочитать файл .txt, я получаю NullPointerException. Я просмотрел все, но не могу найти ответа ни на что. Было бы очень хорошо, если бы кто-нибудь мог сказать мне, что я сделал не так.

   public class fileClassOpen implements ActionListener{

    public void actionPerformed(ActionEvent e) {
        int dialog = chooser2.showOpenDialog(Other.this);
        if (dialog == JFileChooser.APPROVE_OPTION) {
            String path = chooser.getSelectedFile().getAbsolutePath();
            try {
                FileReader fw = new FileReader(path);
                BufferedReader br = new BufferedReader(fw);
                while(br.readLine() != null) {
                    txtArea.setText(br.readLine());
                }
            } catch (IOException e1) {
            }
        }
    }
}

Не могли бы вы опубликовать трассировку стека ошибок?

aUserHimself 10.09.2018 06:55

Какое отношение между выборщик и chooser2, кроме .... упс! Вы также захотите добавить в текстовое поле.

DevilsHnd 10.09.2018 07:00
catch (IOException e1) { } никогда не проглатывает исключения
Scary Wombat 10.09.2018 07:10

1) Для более быстрой помощи опубликуйте минимальный воспроизводимый пример или Краткий, автономный, правильный пример. 2) String path = chooser.getSelectedFile().getAbsolutePath(); .. FileReader fw = new FileReader(path); должен быть лучше .. FileReader fw = new FileReader(chooser.getSelectedFile());. Селектор уже предоставляет File. Не возитесь с преобразованием его в путь String. 3) Как только код установит читалку, просто JTextComponent.read(Reader,Object) 4) ..

Andrew Thompson 10.09.2018 13:13

.. 4) И, как упомянул @ScaryWombat, никогда просто перехватывает и игнорирует исключения. По крайней мере, звоните e1.printStackTrace();

Andrew Thompson 10.09.2018 13:14

Чтобы прочитать файл в JTextArea, просто используйте метод read(...) JTextArea. Вам не нужно писать собственный цикл. Метод прочитает за вас весь файл.

camickr 10.09.2018 16:07
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
7
53
3

Ответы 3

Вы вызываете br.readline () два раза. Таким образом, вы в конечном итоге читаете две строки за раз. Возможно, поэтому он выбрасывает исключение NullPointerException, если все остальное работает. Я бы сделал что-то вроде этого:

String line = "";
while ((line = br.readLine()) != null){
   txtArea.setText(line);
}

Кроме того, никогда не пытайтесь проглотить исключение без правильного оператора catch.

Наконец, текстовая область содержит последнюю строку текстового файла. Используйте append(), чтобы добавить весь текстовый файл в текстовое поле.

Ganesh Patel 10.09.2018 12:51

Попробуйте использовать txtArea.append( br.readLine() ); вместо txtArea.setText(br.readLine()), поскольку textArea.append(str) добавляет указанный текст в конец документа. Ничего не делает, если заданная строка пуста или пуста.

Привет, ребята, извините за потраченное время. Я только что понял, что обращаюсь к неправильной переменной. Спасибо за поддержку! :)

Другие вопросы по теме