我得到了eofexception我试图解决它,但没有找到答案 它在ObjectInputStream行中给出了异常 请帮帮我。
public class SearchIndex extends ObjectOutputStream {
static Map<String, List<String>> map = new HashMap<String, List<String>>();
public SearchIndex(OutputStream out) throws IOException {
super(out);
}
public static void readIndex() throws FileNotFoundException, IOException, ClassNotFoundException {
// create an ObjectInputStream for the file we created before
File file = new File("res/searchIndex.txt");
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
System.out.println(ois.readObject());
// read and print an int
map = (Map<String, List<String>>) ois.readObject();
System.out.println(map);
ois.close();
}
帮我解决这个问题
答案 0 :(得分:2)
错误仅仅是因为位置res/searchIndex.txt
的文件为空。
检查文件中是否有任何数据..
此外,由于您使用了ObjectInputStream
,因此您的文本内容不会自动转换为字节。
如果您使用readObject()
进行阅读;那么你必须使用writeObject()
将内容写入文件。
答案 1 :(得分:0)
它是一个预期的行为,ois.readObject()
到达文件的末尾并且无法进一步处理。
在try catch块中处理它
答案 2 :(得分:0)
您需要将对象显式地转换为String。
使用
System.out.println((String) ois.readObject());
它应该有用。