Java: BufferedReader не распечатывает содержимое файла в TXT-файле - PullRequest
0 голосов
/ 09 апреля 2020

У меня проблемы с BufferedReader, считывающим содержимое txt-файла в папке, которая вызывается с помощью метода showEditFile() с использованием массива с вводом пользователя из метода pideNumero.preguntaUno();, который принимает int для перебора позиции массива:

Массив, который проходит через папку "Archivos".

    public static String[] testFiles() {

        String endPath = System.getProperty("user.dir");
        String separator = File.separator;
        String folderPath = endPath + separator + "Archivos";

        File carpeta = new File(folderPath);

        String[] lista = carpeta.list();

        return lista;

    }

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

 public static void showEditFile() throws IOException {

        System.out.println("Por Favor, elige un archivo con su numero para mostrar su contenido ");
        System.out.println("Los archivos dentro la carpeta Archivos son: ");
        Menu.listFiles.nomFiles();

        String[] archivos = Menu.listFiles.testFiles();

        int menu = Menu.pideNumero.preguntaUno();

        File document = new File(archivos[menu - 1]);

        try {
            FileReader fr = new FileReader(document);
            BufferedReader br = new BufferedReader(fr);
            String line;
            line = br.readLine();

            System.out.println(line);

        } catch (FileNotFoundException e) {
            System.out.println("File not found." + document.toString());
        } catch (IOException e) {
            System.out.println("Unable to read file: " + document.toString());
        }
    }

Я пытался проверить в режиме отладки обратите внимание, что в строке FileReader fr = new FileReader(document); он будет прыгать прямо в FileNotFoundException с FilePath == null , из-за которого, я думаю, возникает проблема.

Кажется, он не знает путь после "Archivos"

Путь: Root \ Archivos \ kiki.txt

Я застрял на этом целый день, может кто-нибудь, пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

carpeta.list() не дает полностью определенного пути. Это только дает вам имя файла. Поэтому следующий вызов new File(archivos[menu - 1]) не удастся. В new File(archivos[menu - 1]) вам нужно будет предоставить полный текст, и тогда вы не получите исключение. См. https://docs.oracle.com/javase/7/docs/api/java/io/File.html#list ()

0 голосов
/ 10 апреля 2020

Так что благодаря @Jags я понял проблему. Решение ниже:

В моем массиве я возвращал String [], который сохраняет в основном строки ... Поэтому, когда я пытаюсь вызвать его из другого метода для считывания содержимого, он показывает мне имя файл (который является строкой, но ему не будет назначен путь к файлу, потому что это просто строка).

Изменения, которые я сделал здесь:

public static File[] testFiles() {

        String endPath = System.getProperty("user.dir");
        String separator = File.separator;
        String folderPath = endPath + separator + "Archivos";

        File carpeta = new File(folderPath);
        // here as you can see i used the listFiles() method to list all the files and 
        // and save them into the File[] array
        File[] lista = carpeta.listFiles();   

        return lista;

    }

Теперь при вызове метода в моем другом методе showEditFiles ():

public static void showEditFile() throws IOException {

        System.out.println("Por Favor, elige un archivo con su numero para mostrar su contenido ");
        System.out.println("Los archivos dentro la carpeta Archivos son: ");
        Menu.listFiles.nomFiles();

        File[] archivos = Menu.listFiles.testFiles();

        int menu = Menu.pideNumero.preguntaUno();

        File document = new File(archivos[menu - 1]);

        try {
            FileReader fr = new FileReader(document);
            BufferedReader br = new BufferedReader(fr);
            String line;
            line = br.readLine();

            System.out.println(line);

        } catch (FileNotFoundException e) {
            System.out.println("File not found." + document.toString());
        } catch (IOException e) {
            System.out.println("Unable to read file: " + document.toString());
        }
    }

Теперь выводится первая строка файл (который в этом случае был hellow).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...