Исключение неправильного ввода: Длина ввода = 1 при чтении текстового файла с помощью Files.ReadAllLines(Путь.get(«файл»).get(0);

#encoding

Вопрос:

Почему я получаю эту ошибку? Я пытаюсь извлечь информацию из PDF-файла банковской выписки и подсчитать разные счета за месяц. Я записываю данные из PDF в текстовый файл, чтобы получить конкретные данные из файла (например, ASPEN HOME IMPRO, затем повторяю, какова сумма в долларах, затем считываю эту текстовую строку в строку).

Когда Files.readAllLines(Path.get("bankData").get(0) код запускается, я получаю сообщение об ошибке. Есть какие-нибудь мысли, почему? Проблема с кодировкой?

Вот код:

 public static void main(String[] args) throws IOException {

    File file = new File("C:\Users\wmsai\Desktop\BankStatement.pdf");
    PDFTextStripper stripper = new PDFTextStripper();
    BufferedWriter bw = new BufferedWriter(new FileWriter("bankData"));
    BufferedReader br = new BufferedReader(new FileReader("bankData"));
    String pdfText = stripper.getText(Loader.loadPDF(file)).toUpperCase();

    bw.write(pdfText);
    bw.flush();
    bw.close();

    LineNumberReader lineNum = new LineNumberReader(new FileReader("bankData"));
    String aspenHomeImpro = "PAYMENT: ACH: ASPEN HOME IMPRO";
    String line;
    while ((line = lineNum.readLine()) != null) {
        if (line.contains(aspenHomeImpro)) {
            int lineNumber = lineNum.getLineNumber();
            int newLineNumber = lineNumber   4;
            String aspenData = Files.readAllLines(Paths.get("bankData")).get(0); //This is the code with the error
            System.out.println(newLineNumber);
            break;
        } else if (!line.contains(aspenHomeImpro)) {
            continue;
        }
    }

}
 

Ответ №1:

Так что я все понял. Мне пришлось проверить свойства рассматриваемого текстового файла (я использую Eclipse), чтобы выяснить, какова фактическая кодировка текстового файла.

Затем, при создании файла в программе, закодируйте текстовый файл в UTF-8, чтобы Files.ReadAllLines мог прочитать и захватить данные, которые я хотел получить.