java中随机流写入的程序,在文件里找出现乱码,不是我写入的东西

代码如下,不过名字必须写三个字,还有在屏幕上可以显示我写的内容importjava.util.Scanner;importjava.io.File;importjava.... 代码如下,不过名字必须写三个字,还有在屏幕上可以显示我写的内容
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
//随机流,
enum Sex1{
男,女
}
public class MainClass_RandomAccess {
public static void main(String[] args) {
String name;
Sex1 a;
int number;
String course[]={"高数","英语","C语言","军训"};
float score[];
Scanner sc=new Scanner(System.in);
System.out.println("请输入姓名");
name=sc.next();
System.out.println("请输入性别 1:男,2:女");
int x=sc.nextInt();
if(x==1){
a=Sex1.男;
}
else{
a=Sex1.女;
}
System.out.println("请输入学号");
number=sc.nextInt();
score=new float[4];//创建数组
for(int i=0;i<4;i++){
System.out.println("请输入"+course[i]+"的成绩");
score[i]=sc.nextFloat();
}
try{
File file=new File("E:\\student.txt");
RandomAccessFile raf=new RandomAccessFile(file,"rw");
raf.writeChars(name);
//raf.writeChar(a);
raf.writeInt(number);
for(int i=0;i<course.length;i++){
raf.writeChars(course[i]);
raf.writeChar(':');
raf.writeFloat(score[i]);
}
raf.seek(0);
System.out.print(raf.readChar());
System.out.print(raf.readChar());
System.out.println(raf.readChar());
//System.out.println(raf.readChar());
System.out.println(raf.readInt());
for(int i=0;i<course.length;i++){
char c;
while((c=raf.readChar())!=':'){
System.out.print(c);
}
System.out.print(c);
System.out.println(raf.readFloat());
}

}
catch(IOException e){
e.printStackTrace();
}
}
}
展开
 我来答
匿名用户
2014-04-26
展开全部
先去把字符编码搞懂,就能理解为什么,乱码了,不要用writeChar方法来写文件,直接用write就行,直接写如byte数据,向将name字符串,指定相应的字符集,转成byte数据,如果你用的是window系统,byte[] nameByte = name.getBytes("GBK");,如果是linux ,byte[] nameByte= name.getBytes("UTF8");
调用raf.write(nameByte);写入文件,就应该不乱码了。乱码原因是writeChar
写入的是 unicode bmp面的字符,文本编辑器不识别,就显示乱码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式