从文件而不是单词加载数字


软件包 jtextareatest;import java.io.FileInputStream;import java.io.IOException;导入 javax.swing.*;公共类 Jtextareatest {    public static void main(String[] args) 抛出 IOException {        FileInputStream in = new FileInputStream("test.txt");        JFrame frame = new JFrame("WHAT??");        frame.setSize(640, 480);        JTextArea textarea = new JTextArea();        frame.add(textarea);        国际 c;        而 ((c = in.read()) != -1) {            textarea.setText(textarea.getText() + Integer.toString(c));        }        frame.setVisible(true);        in.close();    }}

当它运行时,它不是放置文件中的正确单词,而是放置与单词无关的随机数。我该如何解决这个问题?

您可能正在以二进制模式(使用FileInputStream.get)读取文本文件("test.txt")。

我建议你使用一些ReaderScanner.

例如,尝试以下操作:

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

顺便说一句,您可能希望使用StringBuilder构建字符串并最终执行textarea.setText(stringbuilder.toString())

使用 JTextComponent API 提供的 read() 方法:

FileReader reader = new FileReader( "test.txt" );
BufferedReader br = new BufferedReader(reader);
textArea.read( br, null );
br.close();

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

从此输入流读取一个字节的数据。

返回类型是 int,而不是 char 或其他东西。

所以按照aioobe说的去做。

未测试,但您也应该能够将字节(整数)转换为字符:

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

不过,aioobe的回答可能还是更好的。

相关内容

  • 没有找到相关文章

最新更新