Каждый раз, когда я пытаюсь прочитать файл .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) {
}
}
}
}
Какое отношение между выборщик и chooser2, кроме .... упс! Вы также захотите добавить в текстовое поле.
catch (IOException e1) { }
никогда не проглатывает исключения
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) ..
.. 4) И, как упомянул @ScaryWombat, никогда просто перехватывает и игнорирует исключения. По крайней мере, звоните e1.printStackTrace();
Чтобы прочитать файл в JTextArea
, просто используйте метод read(...)
JTextArea. Вам не нужно писать собственный цикл. Метод прочитает за вас весь файл.
.. 5) Чуть не забыл. См. Что такое трассировка стека и как ее использовать для отладки ошибок приложения? и Что такое исключение нулевого указателя и как его исправить?
Вы вызываете br.readline () два раза. Таким образом, вы в конечном итоге читаете две строки за раз. Возможно, поэтому он выбрасывает исключение NullPointerException, если все остальное работает. Я бы сделал что-то вроде этого:
String line = "";
while ((line = br.readLine()) != null){
txtArea.setText(line);
}
Кроме того, никогда не пытайтесь проглотить исключение без правильного оператора catch.
Наконец, текстовая область содержит последнюю строку текстового файла. Используйте append()
, чтобы добавить весь текстовый файл в текстовое поле.
Попробуйте использовать txtArea.append( br.readLine() );
вместо txtArea.setText(br.readLine())
, поскольку textArea.append(str)
добавляет указанный текст в конец документа. Ничего не делает, если заданная строка пуста или пуста.
Привет, ребята, извините за потраченное время. Я только что понял, что обращаюсь к неправильной переменной. Спасибо за поддержку! :)
Не могли бы вы опубликовать трассировку стека ошибок?