日期:2014-05-20  浏览次数:20790 次

用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);