使用物件流時產生了EOFException異常

2021-09-01 08:01:18 字數 1141 閱讀 5591

在寫乙個***更新當前頁面訪問瀏覽次數時,因為需要在伺服器停止時將瀏覽次數儲存在檔案中,方便下次呼叫。

為了儲存多個頁面的資料,使用了map集合。儲存的時候經過檢查檔案,可以確定沒有發生任何錯誤,但是在重啟tomcat時,始終會產生乙個eofexception異常,無法讀取到任何內容。

具體錯誤就是因為我先初始化了objectoutputstream物件,再初始化objectinputstream物件,但是它倆不是在用乙個方法中呼叫各自相關的方法,所以一直引發該錯誤。在該部落格乙個截圖是這樣說的:

修改後**如下:

private int count;

private mapmap = new hashmap<>();

private file file;

public countlistener()

public void requestinitialized(servletrequestevent sre)

count = map.get(pageuri);

long nowtime = system.currenttimemillis();

long beftime = nowtime;

if(session.getattribute(pageuri)!=null)

if((nowtime-beftime)==0||(nowtime-beftime)>=(1000*10))

session.setattribute(pageuri,nowtime);

map.put(pageuri, count);}}

public void contextinitialized(servletcontextevent sce)

ois.close();

} catch (classnotfoundexception e) catch (eofexception e) catch (ioexception e)

}public void contextdestroyed(servletcontextevent sce) catch (ioexception e)

}

以下到底產生了幾個物件?

string s new string a 到底產生了幾個物件?上面圖中堆指向常量池的三個箭頭,表示通過new產生乙個字串 hello world 時,會去常量池中查詢是否有 hello world 物件,如果沒有,則在常量池中建立乙個此字串物件,然後在堆中再建立乙個常量池中此 helloworld...

new 乙個物件時發生了什麼

var person function name var p new person boring 以上 在呼叫時,會變成如下 var p person name newobj.constructor.call newobj,name 3 return newobj 4 0 建立乙個新的物件,newo...

IO流的物件使用規律小結

四個明確 明確一 明確讀寫 要操作的資料是資料來源還是資料目的。源 inputstream reader 目的 outputstream writer 明確二 明確位元組字元 要操作的裝置上的資料是位元組還是文字 源 位元組 inputstream 文字 reader 目的 位元組 outputst...