java.io.UncheckedIOException: Cannot delete C:\Users\guo\AppData\Local\Temp\tomcat.8081問題
首先它的報錯是這樣的,只要遇到這個報錯,就是InputStream流使用后未關(guān)閉,inputStream.close()一下就可以啦
java.io.UncheckedIOException: Cannot delete C:\Users\guo\AppData\Local\Temp\tomcat.8081.8076585834079724671\work\Tomcat\localhost\ROOT\upload_00daa733_afe5_4d51_a016_0ed308a7e006_00000000.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:53) ~[tomcat-embed-core-9.0.79.jar:9.0.79] at org.springframework.web.multipart.support.StandardServletMultipartResolver.cleanupMultipart(StandardServletMultipartResolver.java:134) ~[spring-web-5.3.29.jar:5.3.29] at org.springframework.web.servlet.DispatcherServlet.cleanupMultipart(DispatcherServlet.java:1251) [spring-webmvc-5.3.29.jar:5.3.29] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1108) [spring-webmvc-5.3.29.jar:5.3.29] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) [spring-webmvc-5.3.29.jar:5.3.29] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.29.jar:5.3.29] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.29.jar:5.3.29] at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) [tomcat-embed-core-9.0.79.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.29.jar:5.3.29] at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) [tomcat-embed-core-9.0.79.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) [tomcat-embed-websocket-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1790) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.79.jar:9.0.79] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_322] Caused by: java.io.IOException: Cannot delete C:\Users\guo\AppData\Local\Temp\tomcat.8081.8076585834079724671\work\Tomcat\localhost\ROOT\upload_00daa733_afe5_4d51_a016_0ed308a7e006_00000000.tmp ... 44 common frames omitted
我當(dāng)時代碼是這樣的,以為將流直接賦值就行了,忘記了這是地址啊,一但重新賦值就是指向了新的輸入流,原本的那個流就沒人指向它了,jvm直接會定期清除。但是我沒有關(guān)掉那個流,所以就一直報上面的那個bug。怎么說呢,寫代碼的時候帶點腦子。
public static InputStream pictureCompression(InputStream inputStream,String suffix, float scale) throws IOException { File tempFile = File.createTempFile("temp", suffix); try { Thumbnails.of(inputStream) .scale(scale) .toFile(tempFile); inputStream = new FileInputStream(tempFile); } catch (IOException e) { log.error("[圖片壓縮失敗]"); } finally { tempFile.deleteOnExit(); // 刪除臨時文件 } return inputStream; }
就這樣關(guān)掉就好了
public static InputStream pictureCompression(InputStream inputStream,String suffix, float scale) throws IOException { File tempFile = File.createTempFile("temp", suffix); try { Thumbnails.of(inputStream) .scale(scale) .toFile(tempFile); inputStream.close(); inputStream = new FileInputStream(tempFile); } catch (IOException e) { log.error("[圖片壓縮失敗]"); } finally { tempFile.deleteOnExit(); // 刪除臨時文件 } return inputStream; }
到此這篇關(guān)于java.io.UncheckedIOException: Cannot delete C:\Users\guo\AppData\Local\Temp\tomcat.8081問題的文章就介紹到這了,更多相關(guān)java.io.UncheckedIOException內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解決Spring調(diào)用Feign報錯:java.io.IOException:Incomplete output stream問題
- java使用java.io.File類和java.nio.file.Path類對文件重命名
- java.io.IOException:?UT010029:?Stream?is?closed異常分析及解決
- java.io.UnsupportedEncodingException異常的正確解決方法(親測有效!)
- java.io.NotSerializableException異常的問題及解決
- java.io.EOFException產(chǎn)生原因及解決方法(附代碼)
- java.io.EOFException: Unexpected end of ZLIB input stream異常解決
- java.io.IOException:你的主機(jī)中的軟件中止了一個已建立的連接踩坑實戰(zhàn)
- java.io.File的renameTo方法移動文件失敗的解決方案
相關(guān)文章
Java中的動態(tài)代理和靜態(tài)代理詳細(xì)解析
這篇文章主要介紹了Java中的動態(tài)代理和靜態(tài)代理詳細(xì)解析,Java中的代理可以幫助被代理者完成一些前期的準(zhǔn)備工作和后期的善后工作,但是核心的業(yè)務(wù)邏輯仍然是由被代理者完成,需要的朋友可以參考下2023-11-11解析Java中的Timer和TimerTask在Android中的用法和實例
本篇文章主要介紹了解析Java中的Timer和TimerTask在Android中的用法,主要介紹了Timer和TimerTask的用法,有需要的可以了解一下。2016-11-11SpringCloud Config統(tǒng)一配置中心問題分析解決與客戶端動態(tài)刷新實現(xiàn)
springcloud config是一個解決分布式系統(tǒng)的配置管理方案。它包含了 client和server兩個部分,server端提供配置文件的存儲、以接口的形式將配置文件的內(nèi)容提供出去,client端通過接口獲取數(shù)據(jù)、并依據(jù)此數(shù)據(jù)初始化自己的應(yīng)用2022-10-10SpringBoot整合Swagger3生成接口文檔的示例代碼
Swagger 是一個 RESTful API 的開源框架,它的主要目的是幫助開發(fā)者設(shè)計、構(gòu)建、文檔化和測試 Web API,本文給大家介紹了SpringBoot整合Swagger3生成接口文檔的流程,并通過代碼講解的非常詳細(xì),需要的朋友可以參考下2024-04-04Java爬蟲實戰(zhàn)抓取一個網(wǎng)站上的全部鏈接
這篇文章主要介紹了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。2016-10-10Java中具有映射關(guān)系的容器:數(shù)組和Map的區(qū)別說明
這篇文章主要介紹了Java中具有映射關(guān)系的容器:數(shù)組和Map的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09