上的圖像我做的,它由一個Java服務器和網頁的項目。我想這樣做,當你從網上刪除一個對象時,服務器刪除與這個對象關聯的圖像。每個對象的圖像都存儲在web文件夾內的images文件夾內。但是當我嘗試在服務器上刪除的圖像,它說,該文件被另一個進程使用,因爲Web服務器的線程使用它(我用灰熊),所以我an't刪除。刪除Java服務器
//save the image
private void saveImage(Eetakemon e){
String base64Image = e.getImage().split(",")[1];
byte[] imageBytes =
javax.xml.bind.DatatypeConverter.parseBase64Binary(base64Image);
File imageFile = new File("WEB\\images\\" + e.getName() + ".png");
try {
BufferedImage bufferedImage = ImageIO.read(new
ByteArrayInputStream(imageBytes));
ImageIO.write(bufferedImage, "png", imageFile);
}
catch(Exception ex){
ex.printStackTrace();
}
}
//delete the image
private void deleteImage(Eetakemon e){
try {
Files.deleteIfExists(Paths.get("WEB\\images\\" + e.getName() +
".png"));
}catch(Exception ex){
ex.printStackTrace();
}
}
的funcions被稱爲創建和刪除方法裏面分別
謝謝
我們將需要更多的細節。我想服務器在Windows上運行,不允許刪除正在使用的文件:您可能忘記關閉閱讀器或書寫器......但提供更多模糊提示是很困難的。你可以分享你處理該文件的代碼位? (不只是你刪除它的地方) –
是的,我正在使用Windows。這個問題似乎是Web服務器的線程具有圖像鎖定,我不能刪除它們,但我不知道是否有任何其他的選擇。 – kag3707
在共享的2種方法中(一種是*寫*,一種是*刪除*),我沒有看到任何可以使文件保持打開的狀態(因爲ImageIO.write應該在完成時關閉文件),所以問題可能不在那裏。你有沒有另一塊代碼在*讀取文件的地方? - 你還寫了*「它說該文件被另一個進程使用」*:你能分享確切的錯誤消息,並且如果有跟蹤堆棧跟蹤嗎? –