从文件中加载数字而不是文字 包装测试; 导入java.io.FileInputStream; 导入java.io.IOException; 导入javax.swing.*; 公共类JTextArea测试{ 公共静态void main(字符串[]args)引发IOException{ FileInputStream in=新的FileInputStream(“test.txt”); JFrame=新JFrame(“什么”); 帧设置大小(640480); JTextArea textarea=新的JTextArea(); frame.add(文本区域); INTC; 而((c=in.read())!=-1){ setText(textarea.getText()+Integer.toString(c)); } frame.setVisible(true); in.close(); } }
运行此操作时,它不会从文件中放置正确的单词,而是放置与单词无关的随机数字。如何修复此问题?您可能正在以二进制模式(使用从文件中加载数字而不是文字 包装测试; 导入java.io.FileInputStream; 导入java.io.IOException; 导入javax.swing.*; 公共类JTextArea测试{ 公共静态void main(字符串[]args)引发IOException{ FileInputStream in=新的FileInputStream(“test.txt”); JFrame=新JFrame(“什么”); 帧设置大小(640480); JTextArea textarea=新的JTextArea(); frame.add(文本区域); INTC; 而((c=in.read())!=-1){ setText(textarea.getText()+Integer.toString(c)); } frame.setVisible(true); in.close(); } },java,swing,file,io,Java,Swing,File,Io,运行此操作时,它不会从文件中放置正确的单词,而是放置与单词无关的随机数字。如何修复此问题?您可能正在以二进制模式(使用FileInputStream.get)读取文本文件(“test.txt”) 我建议您使用一些阅读器或扫描仪 例如,请尝试以下操作: package jtextareatest; import java.io.FileInputStream; import java.io.IOException; import javax.swing.*; public class Jtex
FileInputStream.get
)读取文本文件(“test.txt”
)
我建议您使用一些阅读器
或扫描仪
例如,请尝试以下操作:
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();
}
}
顺便说一句,您可能希望使用and do
textarea.setText(stringbuilder.toString())
构建字符串。您可能正在以二进制模式(使用FileInputStream.get
)读取文本文件(“test.txt”
)
我建议您使用一些阅读器
或扫描仪
例如,请尝试以下操作:
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();
}
}
顺便说一句,您可能希望最终使用and do
textarea.setText(stringbuilder.toString())
构建字符串。
从该输入流读取一个字节的数据
返回类型是int,不是char之类的
那就照我说的去做。
从该输入流读取一个字节的数据
返回类型是int,不是char之类的
所以,按照aioobe所说的去做。未测试,但您应该能够将字节(整数)转换为字符:
Scanner scanner = new Scanner(new File("test.txt"));
while (scanner.hasNextInt())
textarea.setText(textarea.getText() + scanner.nextInt());
但是,aioobe的答案可能更好。未经测试,但您应该能够将字节(整数)转换为字符:
Scanner scanner = new Scanner(new File("test.txt"));
while (scanner.hasNextInt())
textarea.setText(textarea.getText() + scanner.nextInt());
但是,aioobe的答案可能更好。使用JTextComponent API提供的read()方法:
int c;
while ((c = in.read()) != -1)
{
textarea.setText(textarea.getText() + Character.toString((char)c));
}
使用JTextComponent API提供的read()方法:
int c;
while ((c = in.read()) != -1)
{
textarea.setText(textarea.getText() + Character.toString((char)c));
}
如果我将“test”写入test.txt,并运行您的程序,它将生成116 101 115 116 10粘合在一起。这些数字是您要求的ascii值(c=in.read读取字节,但返回int,以便能够返回-1作为错误指示器,不是吗?您应该使用扫描仪。test.txt的编码是什么?如果我写“test”要测试.txt并运行您的程序,它将生成116 101 115 116 10。这些数字是您要求的ascii值(c=in.read读取字节,但返回int,以便能够返回-1作为错误指示器,不是吗?您应该使用扫描仪。test.txt的编码是什么?