Java - игнорирование определенных символов при чтении текстового файла - PullRequest
0 голосов
/ 12 декабря 2011

Я пытаюсь прочитать простой текстовый файл, который содержит следующее:

НАГРУЗКИ

Бобы Билла

1200

20

15

30

QUIT

Мне нужно хранить и печатать содержимое построчно. Я делаю это, используя следующий код:

    String inputFile = "(file path here)";
    try {
        Scanner input = new Scanner(inputFile);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    String currentLine = "";
    while (!currentLine.equals("QUIT}")){
        currentLine = input.nextLine();
        System.out.println(currentLine);
    }
    input.close();

Однако вывод очень "грязный". Я стараюсь не хранить все символы новой строки и все, что не отображается в текстовом файле. Выход:

{\ rtf1 \ ANSI \ ansicpg1252 \ cocoartf949 \ cocoasubrtf540

{\ fonttbl \ f0 \ fmodern \ fcharset0 Courier;}

{\ colortbl; \ red255 \ green255 \ blue255;}

\ margl1440 \ margr1440 \ vieww9000 \ viewh8400 \ viewkind0

\ deftab720

\ пард \ pardeftab720 \ QL \ qnatural

\ f0 \ fs26 \ cf0 LOAD \

Бобов Билла \

1200 \

20 \

15 \

30 \

QUIT}

Любая помощь будет принята с благодарностью, спасибо!

Ответы [ 3 ]

2 голосов
/ 12 декабря 2011

Похоже, вы читаете RTF-файл, не правда ли, случайно?

В противном случае я обнаружил, что чтение текстовых файлов наиболее естественно для меня, используя эту конструкцию:

        BufferedReader reader = new BufferedReader(
                                    new FileReader(new File("yourfile.txt")
                                );
        String text = null;

        // repeat until all lines is read
        while ((text = reader.readLine()) != null) {
            // do whatever with the text line
        }

Поскольку это файл RTF, посмотрите на это, например: RTFEditorKit

0 голосов
/ 12 декабря 2011

Просто добавьте следующий код в ваш класс, затем вызовите его с параметром пути. возвращает все строки в виде объекта List

public List<String> readStudentsNoFromText(String path) throws IOException {
            List<String> result = new ArrayList<String>();

            // Open the file that is the first
            // command line parameter
            FileInputStream fstream = new FileInputStream(new File(path));
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
            //Read File Line By Line
            while ((strLine = br.readLine()) != null) {
                // Print the content on the console
                System.out.println(strLine);
                result.add(strLine.trim());

            }
            //Close the input stream
            in.close();

            return result;
        }
0 голосов
/ 12 декабря 2011

Если вы настаиваете на написании своего собственного RTF-ридера, правильный подход - расширить FilterInputStream и обрабатывать метаданные RTF в его реализации.

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