看看这个有关文件库的问题!!!!!
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 个错误