Возможное разыменование нулевого указателя с помощью BufferedReader

#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 внутри цикла?