最近使用爬虫下载图片,遇到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;
}
}
博主在使用爬虫下载图片时,遇到用ctrl+C或INT中断,部分图片下载不完整的问题。为此需要筛选出不完整图片的代码,文中仅给出image/jpeg的例子。

3345

被折叠的 条评论
为什么被折叠?



