一个程序读取一个文件,每次单击一下按钮读取下一行的数据
把这一行显示在TextArea()中。现在问题是,每次读取数据后,会出现乱码,但是不是全部乱码,而是其中有几个字出现乱码。
请问如何解决?其中读取数据的代码如下:public void actionPerformed(ActionEvent arg0) {
File f = new File("C:\\Documents and Settings\\Administrator\\My Documents\\zh问答.TXT");
StringBuffer s = new StringBuffer();
try {
RandomAccessFile rsf=new RandomAccessFile(f,"r");
rsf.seek(seek_i);
s1=rsf.readLine();
if(s1!=null)
{
s.append(new String(s1.getBytes("8859_1"),"gb2312"));
seek_i=rsf.getFilePointer()+1;
}
t1.setText(s.toString());
} catch (Exception e) {
e.printStackTrace();
} } });
把这一行显示在TextArea()中。现在问题是,每次读取数据后,会出现乱码,但是不是全部乱码,而是其中有几个字出现乱码。
请问如何解决?其中读取数据的代码如下:public void actionPerformed(ActionEvent arg0) {
File f = new File("C:\\Documents and Settings\\Administrator\\My Documents\\zh问答.TXT");
StringBuffer s = new StringBuffer();
try {
RandomAccessFile rsf=new RandomAccessFile(f,"r");
rsf.seek(seek_i);
s1=rsf.readLine();
if(s1!=null)
{
s.append(new String(s1.getBytes("8859_1"),"gb2312"));
seek_i=rsf.getFilePointer()+1;
}
t1.setText(s.toString());
} catch (Exception e) {
e.printStackTrace();
} } });
是window xp的文档的。 不清楚是那种编码。
{
try
{
File file = new File(path);
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file), "GBK"));// 编码转换
int size = (int) file.length();
int charRead = 0;
char[] content = new char[size];
while (br.ready())
{
charRead += br.read(content, charRead, size - charRead);
}
br.close();
text.setText(new String(content, 0, charRead));
} catch (IOException e)
{
System.out.println("读取文件出错");
}
}
s1=rsf.readLine(); 因为java中不管是英文字符,还是中文字符,它都采用两个字节存储,
而本地计算机中的编码,英文只占用一个字节,而中文是两个,,,
readLine()方法从该文件的当前文件指针处成功地读取字节,直到到达行结束符或文件的末尾
读取的时候不要用readLine()方法,用readChar()方法
下面是关于这个方法的介绍:
public final char readChar()
throws IOException从此文件读取一个字符。此方法从该文件的当前文件指针开始读取两个字节。如果按顺序读取的字节为 b1 和 b2,其中 0 <= b1, b2 <= 255,则结果将等于:
(char)((b1 << 8) | b2)
在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
指定者:
接口 DataInput 中的 readChar
返回:
此文件的下两个字节,解释为 char。
抛出:
EOFException - 如果在读取两个字节之前此文件已到达末尾。
IOException - 如果发生 I/O 错误。
类比较好....
而且编码可以指定的。
谢谢假如我用readChar()方法来读取文件的一行,应该如何读取的?