| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2364 人关注过本帖
标题:[求助]一个java读写txt文件数据的程序,为什么会是这样的结果?!
只看楼主 加入收藏
绿菜油小苦工
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-10-1
收藏
 问题点数:0 回复次数:4 
[求助]一个java读写txt文件数据的程序,为什么会是这样的结果?!

这是源代码:
import java.io.RandomAccessFile;
/**记录3个员工的文本,用RandomAccessFile进行操作
* 听说要求是每个字段都要相同的长
*
*/

class Employee
{
private String name;
private int age;
public static final int LEN=14;

public Employee()
{

}
public Employee(String name,int age)
{
if(name.length()>LEN)
{
name=name.substring(0,LEN);
}
else
while(name.length()<LEN)
{
name+="\u0000";
}
this.name=name;
this.age=age;
}

//method: getName(),getAge()
public String getName()
{
return name;
}

public int getAge()
{
return age;
}

}

class RandomAccessFileTest {


public static void main(String[] args) throws Exception
{
Employee e1=new Employee("zhaobo",21);
Employee e2=new Employee("zhaoyunxia",20);
Employee e3=new Employee("baby",2);

RandomAccessFile raf =new RandomAccessFile("employee.txt", "rw");
raf.writeChars(e1.getName());
raf.writeInt(e1.getAge());
raf.writeChars(e2.getName());
raf.writeInt(e2.getAge());
raf.writeChars(e3.getName());
raf.writeInt(e3.getAge());

raf.close();

RandomAccessFile raf2 =new RandomAccessFile("employee.txt", "r");

byte[] buf=new byte[Employee.LEN];//长度为14字节的缓冲区
int buflen;//读入缓冲区的字节数
String strName="";
//int iage;

//no.2
raf2.seek(Employee.LEN+4);
buflen=raf2.read(buf);
strName=new String(buf,0,buflen);
//System.out.println("buflen :"+buflen);
//iage=raf2.readInt();
System.out.println(strName+";"+raf2.readInt());

//no.1
raf2.seek(0);
buflen=raf2.read(buf);
strName=new String(buf,0,buflen);
//iage=raf2.readInt();
System.out.println(strName+";"+raf2.readInt());

//no.3
raf2.skipBytes(Employee.LEN+4);
buflen=raf2.read(buf);
strName=new String(buf,0,buflen);
//iage=raf2.readInt();

System.out.println(strName+";"+raf2.readInt());

raf2.close();
}



}

我本以为的运行结果是
zhaoyunxia :20
zhaobo :21
baby :2

但实际结果却是:
:7995496
z h a o b o :0
a o x u n x i:6356992

对了,我用的是eclipse,我用dos运行直接给我抛出一堆异常了......

我调试了一下,发现错在
strName=new String(buf,0,buflen);
执行到这句,strName没有正确的接收到名字。
但是不知道为什么

[此贴子已经被作者于2007-4-21 19:02:28编辑过]

搜索更多相关主题的帖子: java txt 数据 文件 
2007-04-21 19:00
lonelibird
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-5
收藏
得分:0 

因为txt文件一般都是ANSI编码,不是UNICODE 编码
而java默认的是UNICODE编码
你不信可以对那个employee.txt另存为employee1.txt选择UNICODE编码

2007-04-21 19:25
绿菜油小苦工
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-10-1
收藏
得分:0 
不行呀...
这算是问题之一吧;
改了后,结果还是有问题呀!

java 学习群 38859633 欢迎大家加入
2007-04-21 19:31
嶄ぎ儱
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-4-21
收藏
得分:0 
不能执行啊!

别人不给你机会,自己去创造机会.
2007-04-21 19:54
绿菜油小苦工
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-10-1
收藏
得分:0 
怎么会呢,可以执行呀

java 学习群 38859633 欢迎大家加入
2007-04-21 20:00
快速回复:[求助]一个java读写txt文件数据的程序,为什么会是这样的结果?!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017840 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved