最近使用爬虫下载图片,遇到ctrl+C或者INT进行中断时,部分图片不能下载完整。因此需要筛选出这部分不完整图片的代码。
这里仅列出image/jpeg的例子:
import org.junit.Test; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import java.io.*; import java.util.Iterator; import static org.junit.Assert.assertEquals; /** * Description: To do * <p> * Author : Adore Chen * Created: 2018-08-22 */ public class ImageCheck { @Test public void testAll(){ int count = 0; File dir = new File("/tmp/data/pics/"); for(File file: dir.listFiles()){ if(!isJPEG(file.getAbsolutePath())){ System.out.println(file.getName()); //file.delete(); count++; } } assertEquals(0, count); } private Boolean isJPEG(String fileName) { boolean canRead = false; try(ImageInputStream iis = ImageIO.createImageInputStream(new File(fileName))){ Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("jpg"); while (readers.hasNext()) { ImageReader reader = readers.next(); reader.setInput(iis); reader.read(0); canRead = true; break; } }catch (Exception e){ } return canRead; } }