Нет вывода из компилируемой программы

#java #file-io

#java #file-io

Вопрос:

Я не могу понять, почему я получаю нулевой результат… Код выглядит правильным для меня, и он компилируется без проблем (за исключением отсутствия вывода). Я пробовал с абсолютным путем. Текстовый файл хранится в той же папке, что и класс. Я упускаю что-то очевидное?

 public class File {

    public static void main(String[] args) throws FileNotFoundException {
        String filename = "./inputD2.txt";
        readFile(filename);
        System.out.println( readFile(filename));
    }
    private static List<String> readFile(String filename) {
        List<String> records = new ArrayList<>();
        try {
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String line;
            while ((line = reader.readLine()) != null) {
                records.add(line);
            }
            reader.close();
            return records;
        }
        catch (Exception e) {
            System.err.format("Exception occurred trying to read '%s'.", filename);
            e.printStackTrace();
            return null;
        }
    }
}
 

Комментарии:

1. Не проблема как таковая, но readFile(filename); сама по себе во второй строке your main не делает ничего полезного.

2. Вы ничего не видите, даже ошибки?

3. Это определенно правильный код, потому что основной метод выдает FileNotFoundException , но readFile метод улавливает все исключения. Кроме того, какова цель format вызова потока системных ошибок, поскольку он, похоже, ничего не делает? Предлагаю отменить всю обработку исключений, чтобы проверить, действительно ли ваш файл существует.

4. Вы получаете трассировку исключения или просто [] ? Если вы получаете буквально нулевой вывод (вообще никакого текста), это невозможно , учитывая вашу вставку — тогда либо ваша установка java повреждена (маловероятно), либо вы запускаете не то, что, по вашему мнению, вы запускаете; например, вы используете более старую версию своего класса.

5. При изучении языка программирования также полезно узнать об инструментах. Поэтому используйте функцию отладки вашей IDE для пошагового выполнения вашей программы, просматривая значения переменных. Затем вы увидите, где программа делает то, чего вы не ожидали.

Ответ №1:

 package com.test;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

public class FileReaderTest {

    public static void main(String[] args) {
        String filename = "F:\Sixth_workspace\Sampleproject\src\main\resources\try.txt";
        System.out.println("Reading from the text file"   " "   readFile(filename));

    }

    private static List<String> readFile(String filename) {

        List<String> records;
        try {
            records = new ArrayList<String>();
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String line;
            while ((line = reader.readLine()) != null) {
                records.add(line);
            }
            reader.close();
            return records;
        } catch (Exception e) {

            System.err.println("Exception occurred trying to read '%s'."   filename);
            e.printStackTrace();
            return null;
        }
    }
}
 

Я изменил ваш код и получил желаемый результат. Используйте полный путь к текстовому файлу здесь

 F:\Sixth_workspace\Sampleproject\src\main\resources\try.txt
 

это мой полный путь.

Изменения:

  1. Изменено имя класса
  2. Указан полный путь к текстовому файлу
  3. Использование java 1.8 (требуется выше 1.5)