
为什么JAVA读入的数据是一行乱码? 5
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("文件已经创建完成!");
}
}
一般解决乱码的办法就是先读取放到byte[]当中,然后转换为String,记得使用charset(好像是这名字)属性。
我读取文本文件txt一般是用FileInputStream的,建议你学学跟流有关的东西