看看这个有关文件库的问题!!!!!

abcwcx 2003-10-10 10:51:18
package K;
import java.io.*;
import java.util.ArrayList;

class obj7{

static class iinfo {
header h;
String key;
}
public static void main(String[] a) throws Exception{
Word[] w = {
new Word("language", "语言"),
new Word("leak", "泄漏"),
new Word("leap", "跳跃")
};

RandomAccessFile f = new RandomAccessFile("dat.dat", "rw"); //数据文件
RandomAccessFile fi = new RandomAccessFile("dat.k0", "rw"); //索引文件
ByteArrayOutputStream bos = new ByteArrayOutputStream(); //数据缓冲流
ObjectOutputStream oos; //对象输出流

long start=0; //记录起始地址
int len=0; //数据长度
byte[] buf; //数据缓冲区

//序列化对象
for(int i=0;i<3; i++) {
//使用一个新的对象输出流来完成序列化
oos = new ObjectOutputStream(bos);
oos.writeObject(w[i]);
oos.close(); //关闭对象出输流,确保序列化输出完成

//获取序列化数据的信息
start = f.getFilePointer();
buf = bos.toByteArray();
len = buf.length; //本条记录长度

//写入索引文件
fi.writeLong(start);
fi.writeInt(len);
fi.writeUTF(w[i].word);
System.out.println("write: start:" + start + ", len:" + len + ", key:" + w[i].word);

//写数据文件
f.write(buf, 0, len);

//!!!重置字节输出流!!!
bos.reset();
}


//检索

//将索引信息读入内存

fi.seek(0); //索引文件指针复位

ArrayList infos = new ArrayList();

while(true) {
try{
//读取记录信息
iinfo info = new iinfo();
info.h = new header(fi.readLong(), fi.readInt());
info.key = fi.readUTF();
infos.add(info);
} catch (Exception e){
break;
}
}

//检索

int recNum = infos.size();
System.out.print(recNum);
BufferedReader in = new BufferedReader( new InputStreamReader(System.in) );
ByteArrayInputStream bis;
ObjectInputStream ois;

while(true) {
String s = in.readLine();
if(s.equals("end")) break; //用户输入end则结束。
boolean found = false; //标志,如发现匹配关键字则置true
for(int i=0; i<recNum; i++) {
if(s.equals( ((iinfo)infos.get(i)).key) ){ //发现匹配的关键字
//读取记录数据
System.out.println(((iinfo)infos.get(i)).key);
buf = new byte[ ((iinfo)infos.get(i)).h.dataLength ];
f.seek( ((iinfo)infos.get(i)).h.dataPointer );
f.read(buf);
//构造数据流
bis = new ByteArrayInputStream(buf);
ois = new ObjectInputStream(bis);
//重建对象并显示
Word word = (Word)ois.readObject();
System.out.println("read object:" + word.word + "--" + word.mean);
ois.close();
//设置标志并返回
found = true;
}
if(found==true) break;
}
if(found==false) System.out.println("Not found");
}
}
}
这个程序的功能是实现对输入文件的查询,但编译时出现这些错误,帮我看看为什么好吗?
D:\java实例\filedata\word\obj7.java:8: 不能解析符号
符号:类 header
位置:类 in K.obj7.iinfo
header h;
^
D:\java实例\filedata\word\obj7.java:12: 不能解析符号
符号:类 Word
位置:类 in K.obj7
Word[] w = {
^
D:\java实例\filedata\word\obj7.java:13: 不能解析符号
符号:类 Word
位置:类 in K.obj7
new Word("language", "语言"),
^
D:\java实例\filedata\word\obj7.java:14: 不能解析符号
符号:类 Word
位置:类 in K.obj7
new Word("leak", "泄漏"),
^
D:\java实例\filedata\word\obj7.java:15: 不能解析符号
符号:类 Word
位置:类 in K.obj7
new Word("leap", "跳跃")
^
D:\java实例\filedata\word\obj7.java:65: 不能解析符号
符号:类 header
位置:类 in K.obj7
info.h = new header(fi.readLong(), fi.readInt());
^
D:\java实例\filedata\word\obj7.java:96: 不能解析符号
符号:类 Word
位置:类 in K.obj7
Word word = (Word)ois.readObject();
^
D:\java实例\filedata\word\obj7.java:96: 不能解析符号
符号:类 Word
位置:类 in K.obj7
Word word = (Word)ois.readObject();
^
8 个错误
...全文
32 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧