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

发布于 2024-11-08 13:26:05 字数 755 浏览 0 评论 0原文

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();
    }
}

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

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();
    }
}

When this runs, instead of placing the correct words from the file, it instead places random numbers that have no relevance to the words. How can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

你又不是我 2024-11-15 13:26:05

您可能正在以二进制模式读取文本文件 ("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())

You're presumably reading a text file ("test.txt") in binary mode (using FileInputStream.get).

I suggest you use some Reader or a Scanner.

Try the following for instance:

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

Btw, you probably want to build up the string using a StringBuilder and do textarea.setText(stringbuilder.toString()) in the end.

海夕 2024-11-15 13:26:05

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

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

Use the read() method provided by the JTextComponent API:

FileReader reader = new FileReader( "test.txt" );
BufferedReader br = new BufferedReader(reader);
textArea.read( br, null );
br.close();
停顿的约定 2024-11-15 13:26:05

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

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

并且返回类型是int,而不是char之类的。

所以就照aioobe说的做吧。

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

Reads a byte of data from this input stream.

and the return type is int, not char or something.

So do what aioobe said.

小糖芽 2024-11-15 13:26:05

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

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

但是,aioobe 的答案可能仍然更好。

Not tested but you should be able to cast the byte (integer) to a character as well:

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

However, aioobe's answer is probably still better.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文