Загрузка чисел из файла вместо слов - PullRequest
2 голосов
/ 22 мая 2011
package jtextareatest;

import java.io.FileInputStream;
import java.io.IOException;
import javax.swing.*;

public class Jtextareatest {
    public static void main(String[] args) throws IOException {
        FileInputStream in = new FileInputStream("test.txt");

        JFrame frame = new JFrame("WHAT??");
        frame.setSize(640, 480);
        JTextArea textarea = new JTextArea();
        frame.add(textarea);

        int c;
        while ((c = in.read()) != -1) {
            textarea.setText(textarea.getText() + Integer.toString(c));
        }

        frame.setVisible(true);
        in.close();
    }
}

Когда это выполняется, вместо размещения правильных слов из файла, он вместо этого помещает случайные числа, которые не имеют отношения к словам. Как я могу это исправить?

Ответы [ 4 ]

5 голосов
/ 22 мая 2011

Вы, вероятно, читаете текстовый файл ("test.txt") в двоичном режиме (используя FileInputStream.get).

Я предлагаю вам использовать Reader или Scanner.

Попробуйте следующее, например:

Scanner scanner = new Scanner(new File("test.txt"));
while (scanner.hasNextInt())
    textarea.setText(textarea.getText() + scanner.nextInt());

Кстати, вы, вероятно, хотите собрать строку, используя StringBuilder и сделать textarea.setText(stringbuilder.toString()) в конце.

0 голосов
/ 22 мая 2011

Используйте метод read (), предоставляемый API JTextComponent:

FileReader reader = new FileReader( "test.txt" );
BufferedReader br = new BufferedReader(reader);
textArea.read( br, null );
br.close();
0 голосов
/ 22 мая 2011

Не проверено, но вы также должны иметь возможность приводить байт (целое число) к символу:

int c;
while ((c = in.read()) != -1)
{
    textarea.setText(textarea.getText() + Character.toString((char)c));
}

Однако ответ aioobe, вероятно, все еще лучше.

0 голосов
/ 22 мая 2011

http://download.oracle.com/javase/6/docs/api/java/io/FileInputStream.html#read%28%29

Считывает байт данных из этого входного потока.

и тип возвращаемого значения int, а не char или что-то еще.

Так что делай, что сказал aioobe.

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