用RandomAccessFile为什么创建的文件为乱码?
文件源代码如下,麻烦高手指点一下!!
import java.io.*;
///创建一个文件类对象
///创建一个随机访问类对象raf
///利用raf写入不同的数据类型的数据到f中
public class file20
{
public static void main(String[] args)throws Exception
{
File f=new File("d:\\filetest\\1.txt");
RandomAccessFile raf=new RandomAccessFile(f,"rw");
int x=4;
char c='b';
long l=123;
float fl=3.4F;
double d=4.222D;
String str="这些都是基本数据类型的数据";
raf.writeInt(x);
raf.writeChar(c);
raf.writeLong(l);
raf.writeFloat(fl);
raf.writeDouble(d);
raf.writeUTF(str);
raf.close();
System.out.println("文件已经创建完毕!");
}
}
------解决方案--------------------偶试过用raf.write(str.getBytes())可以。。
但是其他类型就不行了,估计也要把int char之类都转化成String,然后再getBytes()输出了。。
------解决方案--------------------RandomAccessFile 生成的是 binary file。
文本文件还是使用 PrintWriter + FileWriter
------解决方案--------------------请强制转码 谢谢
------解决方案--------------------str有中文:
String str="这些都是基本数据类型的数据";
写入文件时指定编码为UTF-8:
raf.writeUTF(str);
出现乱码,是编码格式不对。如果要以UTF-8编码格式写入文件,应该对str指定编码:
String str = java.net.URLEncoder.encode("这些都是基本数据类型的数据", "utf-8");
再写入:
raf.writeUTF(str);