使用objectInputStream读取时线程“main”java.io.EOFException中的异常

时间:2015-10-09 08:42:14

标签: java

我得到了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();
  }

帮我解决这个问题

3 个答案:

答案 0 :(得分:2)

错误仅仅是因为位置res/searchIndex.txt的文件为空。

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

此外,由于您使用了ObjectInputStream,因此您的文本内容不会自动转换为字节。 如果您使用readObject()进行阅读;那么你必须使用writeObject()将内容写入文件。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您需要将对象显式地转换为String。

使用

 System.out.println((String) ois.readObject());

它应该有用。