javax.imageio.IIOException: Can't create cache file!

javax.imageio.IIOException: Can't create cache file!
at javax.imageio.ImageIO.createImageInputStream(ImageIO.java:361)
at javax.imageio.ImageIO.read(ImageIO.java:1351)

Caused by: java.nio.file.NoSuchFileException: D:\JAVASERVER\apache-tomcat-7.0.72-ElectBill-8091\temp\imageio3049143507735331701.tmp
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.createFile(Files.java:632)
at java.nio.file.TempFileHelper.create(TempFileHelper.java:138)
at java.nio.file.TempFileHelper.createTempFile(TempFileHelper.java:161)
at java.nio.file.Files.createTempFile(Files.java:897)

由找不到文件引起:java.nio.file.NoSuchFileException: ...\temp\imageio3049143507735331701.tmp
主要原因是使用imgio包进行操作时,默认会使用缓存目录:${tomcat}/temp,在此缓存目录会生成缓存文件,
时间戳.tmp(这一串数字应该是当前时间戳,临时文件名),但是有些tomcat,会把temp目录进行删除,因此报错
解决方法:
1、tomcat的安装目录下新建一个temp目录。
2、ImageIO.setCacheDirectory(cacheDirectory),设置缓存目录。
3、ImageIO.setUseCache(false)设置,更改缓存策略,不使用文件目录缓存,使用内存缓存。

上一篇:【死磕NIO】— 阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO,这你真的分的清楚吗?


下一篇:代码JAR库总是只一个