“线程中的异常”;“主要”;使用objectInputStream读取时发生java.io.EOFEException

“线程中的异常”;“主要”;使用objectInputStream读取时发生java.io.EOFEException,java,Java,我得到了EOFEException我试图解决它,但没有找到答案 它在ObjectInputStream行中给出异常 请帮帮我 public class SearchIndex extends ObjectOutputStream { static Map<String, List<String>> map = new HashMap<String, List<String>>(); public SearchIndex(OutputStr

我得到了EOFEException我试图解决它,但没有找到答案 它在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();
  }
公共类SearchIndex扩展了ObjectOutputStream{
静态映射映射=新的HashMap();
公共搜索索引(OutputStream out)引发IOException{
超级(出局);
}
public static void readIndex()抛出FileNotFoundException、IOException、ClassNotFoundException{
//为之前创建的文件创建ObjectInputStream
File File=新文件(“res/searchIndex.txt”);
FileInputStream fis=新的FileInputStream(文件);
ObjectInputStream ois=新ObjectInputStream(fis);
System.out.println(ois.readObject());
//读取并打印一个int
map=(map)ois.readObject();
系统输出打印项次(map);
ois.close();
}

帮助我解决此问题

这是一种预期行为,
ois.readObject()
到达文件末尾,无法进一步处理。
在try-catch块中处理它

您需要显式地将对象强制转换为字符串

使用


它应该可以工作。

错误只是因为您位于
res/searchIndex.txt
位置的文件是空的

检查文件中是否有任何数据

此外,由于使用了
ObjectInputStream
,文本内容不会自动转换为字节。
如果要使用
readObject()
进行读取,则必须使用
writeObject()
用于将内容写入文件。

感谢您的回答,但我在创建ObjectInputStream对象时遇到异常;感谢您的回答,异常不是打印对象,而是在创建ObjectInputStream对象时遇到异常;@sreenathsirimala好的……您在代码中的哪里以及如何使用writeObject方法?c你能把它贴在这里吗?我已经删除了所有的逻辑,并自己写了@megh vidani谢谢你的回复。如果你已经解决了这个问题,如果你能分享你自己的解决方法,那将是非常好的,这样可以在将来帮助别人。我在评论中添加了答案:-)谢谢你的建议。@meghThank你的回复,是的,我的文件是空的。我通过检查readInt()是否为-1克服了这种影响。正如您所说,我使用了readObject()和writeObject()但是writeObject正在向文件中写入一些转储。感谢您,我正在开发简单的搜索索引;示例文件条目如下所示:关键字:url1,url2,url3;关键字1:url2,url4;help me@Ashishrequesting如果您需要任何其他帮助,请您打开新问题。此外,如果您的上述异常得到解决,您能接受吗然后关闭此问题?回答:当输入文件为空时,FileInputStream将返回-1作为输出,因此,请检查(fis!=-1),然后继续…由于FileInputStream返回我-1,因此正在发生EOF异常…希望这将对您有所帮助。
 System.out.println((String) ois.readObject());