import java.io.*;
public class RandomAccessFileExa1
{ public static void main(String[] args)
{ try
{ File f=new File("G://java code/jackxu/src","good.txt");
RandomAccessFile in_and_out=null;
int data[]={1,2,3,4,5,6,8,9,10};
in_and_out=new RandomAccessFile(f,"rw");
for(int i=0;i<data.length;i++)
{in_and_out.writeInt(data[i]);
}
for(long i=data.length-1;i>0;i--)
{in_and_out.seek(i*4);
System.out.print(","+in_and_out.readInt());
}
in_and_out.close();
}
catch(Exception e){}
}
}
上面的代码是 RandomAccessFile类,我把整行变量数组写入到good.txt,为什么写入到good.txt
全是乱码?这个怎么解决??
public class RandomAccessFileExa1
{ public static void main(String[] args)
{ try
{ File f=new File("G://java code/jackxu/src","good.txt");
RandomAccessFile in_and_out=null;
int data[]={1,2,3,4,5,6,8,9,10};
in_and_out=new RandomAccessFile(f,"rw");
for(int i=0;i<data.length;i++)
{in_and_out.writeInt(data[i]);
}
for(long i=data.length-1;i>0;i--)
{in_and_out.seek(i*4);
System.out.print(","+in_and_out.readInt());
}
in_and_out.close();
}
catch(Exception e){}
}
}
上面的代码是 RandomAccessFile类,我把整行变量数组写入到good.txt,为什么写入到good.txt
全是乱码?这个怎么解决??
楼主去看看API,里面明确说了,写到文件里面的是4个字节表示的数字,不是字符。而且,字符要讲编码的。
楼主写入的文件,扩展名是txt,windows系统会把这个文件按字符文件处理,字符编码按操作系统默认编码。
也就是说,如果双击打开该文件,一般情况下系统会将该文件的数据,
按照GB2312编码打开,由于里面存放的不是字符数据,
所以,按照GB2312编码方式来解码,解出来的基本是乱码。解决这个问题,楼主可以尝试:
将data[]数组的类型声明成char型的,
并且调用writeChar和readChar方法进行存取操作,
当然,这些字符的编码是按照Unicode编码方式进行保存的。
如果打开文件还是乱码(记事本程序不支持Unicode编码),
这就比较麻烦了。
要么,换个程序打开该文件(如,Word、WPS、等等)
要么,换个编码进行存取(这个比较麻烦)
去查seek的API,
比较每次运行的i*4,
哎~