#java
#java
Вопрос:
У меня есть этот фрагмент кода:
...
BufferedReader reader= new BufferedReader(new FileReader(file));
while ((line = reader.readLine()) != null) {
// Do stuff...
}
reader.close();
....
BufferedReader reader2= new BufferedReader(new FileReader(file));
while ((line = reader2.readLine()) != null) { // Here I get a "Dereferencing possible null pointer" warning!
// Do stuff...
}
reader2.close();
...
Если я попытаюсь его выполнить, я получу исключение NullPointerException ((line = reader2.readLine()) != null)
. Я не понимаю, почему возвращается объявление reader2
null
. Связано ли это с тем фактом, что я пытаюсь открыть два BufferedReaders
в одном файле?
Есть идеи, почему это может происходить?
РЕДАКТИРОВАТЬ: полный код:
BufferedReader brFileToAdjust = new BufferedReader(new FileReader(fileToAdjust));
String line;
List<String> customersToAdjust = new ArrayList<String>();
int lineNo = 0;
while ((line = brFileToAdjust.readLine()) != null) {
if (lineNo != 0) { // Do not do this for the first line.:
String[] data = line.split("t");
if (!customersToAdjust.contains(data[0])) {
customersToAdjust.add(data[0]);
}
}
lineNo ;
}
brFileToAdjust.close();
BufferedReader brFileToAdjust2 = new BufferedReader(new FileReader(fileToAdjust));
for (String customer : customersToAdjust) {
boolean newCustomer = true;
String customerTransactions[][] = new String[999][6];
String outputCustomerTransactions[][] = new String[999][15];
lineNo = 0;
int i = 0;
while ((line = brFileToAdjust2.readLine()) != null) {
...
}
}
brFileToAdjust2.close();
Комментарии:
1. Единственный способ, которым вы можете иметь NPE в этой строке, — это if
reader2
равно null . И, основываясь на вашем коде, я не вижу, как это возможно.2. Можете ли вы опубликовать точную трассировку стека? Из текущей информации, которую вы предоставили, это невозможно. Что-то еще должно быть не так. Кроме того, это исключение или предупреждение IDE?
3. В вашем примере здесь должно быть чего-то не хватает. Я попробовал ваш пример, и он корректно работает на моем локальном компьютере.
4. Файл не используется, не перемещается и не удаляется с первого раза. Первый while содержит только чтение всех строк файла и изменение некоторых переменных. Я обновлю вопрос со всем кодом, чтобы посмотреть.
5. В цикле while вы ставите только многоточие… Вы что-нибудь делаете с brFileToAdjust2 внутри цикла?