Исключение файла в строку с нулевым указателем - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь передать содержимое файла в метод как строку и обнаруживаю исключение нулевого указателя. Я конвертирую файл в строку следующим образом:

import java.io.*;

public class FileHandler {

    String inputText = null;

    public String inputReader() {
        StringBuilder sb = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("in.txt"))));
            String line = null;

            while ((line = br.readLine()) != null) {
                sb.append(line);
                String inputText = sb.toString();
                //System.out.println(inputText);
            }
            br.close();

        } catch (IOException e) {
            e.getMessage();
            e.printStackTrace();
        }

        return inputText;
    }
}

Это отлично работает для меня с точки зрения преобразования файла в строку, но когда я пытаюсь передать вывод этого в другой метод Здесь я получаю исключение нулевого указателя:

                char[][] railMatrix = new char[key][inputText.length()];

Я скопировал содержимое файла и передал его как обычную строку, например:

    String plain = "The text from the file"
    int key = 5;
    int offset = 3;
    String encrypted = rf.encrypt(plain, key, offset);
    System.out.println(encrypted);
    String unencrypted = rf.decrypt(encrypted, key, offset);
    System.out.println(unencrypted);

И все сработало нормально. Но

    String plain = fh.inputReader();

Не работает.

Итак, inputReader () вроде работает, методы, которые он передал, работают, но мне явно чего-то не хватает.

A кивок в правильном направлении был бы очень признателен, спасибо друзья.

1 Ответ

1 голос
/ 14 июля 2020

Ваш результат сохраняется в локальной переменной inputText, и вы возвращаете переменную уровня экземпляра, которая имеет значение null и никогда не переназначается. Удалите тип String, как показано ниже, и он должен работать:

while ((line = br.readLine()) != null) {
        sb.append(line);
        inputText = sb.toString();
        //System.out.println(inputText);
    }
...