为什么JAVA读入的数据是一行乱码?

import java.io.*;
public class File2 {
public static void main(String[] args) throws Exception{
File f=new File("D://filetest//file1.txt");
RandomAccessFile raf=new RandomAccessFile(f,"rw");
int x=4;
char c='a';
long l=123;
float f1=3.7f;
double d=4.6568554d;
String s="效率,特高效率";
raf.writeInt(x);
raf.writeChar(c);
raf.writeLong(l);
raf.writeFloat(f1);
raf.writeDouble(d);
raf.writeUTF(s);
raf.close();
System.out.println("文件已经创建完成!");

}
}
打开txt。上面就是一行乱码
不懂,最好给我写一下代码?

RandomAccessFile就类似与你访问内存,你写入的是数值(二进制),比如你写入x,就是一个int类型的占四个bytes,32位,当你打开这个文件的时候你是以文本的形式查看的,所以会出现乱码,如果你写入的是文本类型的,比如s(效率,特高效率),你就能看到,不过因为你写入的时候用的是UTF8,所以你必须以UTF8打开就能看到,否则“效率,特高效率”这几个字也会是乱码

这个我用utf8编码打开后的效果,请参考,希望可以帮助到你


FileWriter改写:

import java.io.File;

import java.io.FileWriter;

import java.util.Scanner;

public class Main {

public static void main(String[] args) throws Exception{

File f=new File("D://file1.txt");

FileWriter fw=new FileWriter(f);

int x=4;

char c='a';

long l=123;

float f1=3.7f;

double d=4.6568554d;

String s="效率,特高效率";

fw.write(x);

fw.write(c);

fw.write(new Float(l).toString());

fw.write(new Double(f1).toString());

fw.write(s);

fw.close();

System.out.println("文件已经创建完成!");

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-11
你的文件中是不是中文来的?如果是,乱码就很正常了。
一般解决乱码的办法就是先读取放到byte[]当中,然后转换为String,记得使用charset(好像是这名字)属性。
我读取文本文件txt一般是用FileInputStream的,建议你学学跟流有关的东西
第2个回答  2012-11-11
直接输入很容易乱码,用过滤流会好,用printwriter
第3个回答  2012-11-11
流写入是intput 你要写东西进去里面可的那个要用字符流转换才可以的
第4个回答  2012-11-11
因为你写进去的不是字符串 而是2进制码........
相似回答