之前做過一個圖片的CRUD功能。在刪除測試的時候,數據庫的資料被刪除了。但上傳到服務器的圖片沒有被刪除。
一開始,我以為是我的刪除方法寫的有問題。但經過我幾番測試,發現是上傳完圖片后資源沒有釋放,這個時候立即去刪除圖片是不能成功的,但數據庫的資料會被刪除
解決方法:
我在上傳的方法中,在上傳完后添加system.gc;調用java的垃圾回收機制來釋放掉資源。但java的垃圾回收機制不是一調用就馬上執行,所以也很有可能出現刪除的時候,gc並未執行。這樣,就需要將刪除文件的代碼放在刪除數據庫的代碼前執行,一旦刪除文件失敗,將停止刪除,將刪除失敗的信息提交前台頁面,前台頁面再用模態框顯示提示信息。讓用戶等gc執行后,將該圖片的資源釋放掉再進行刪除。
