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

时间:2011-05-21 21:16:31

标签: java swing file io

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 个答案:

答案 0 :(得分:5)

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

我建议你使用一些ReaderScanner

请尝试以下方法:

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

顺便说一下,您可能希望使用StringBuilder建立字符串,最后再做textarea.setText(stringbuilder.toString())

答案 1 :(得分:0)

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

  

从此输入流中读取字节数据。

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

所以aioobe说的话。

答案 2 :(得分:0)

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

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

然而,aioobe的回答可能还是更好。

答案 3 :(得分:0)

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

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