📄 getimg.java
字号:
package downLoadImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GetImg extends Thread{
private static int countDownLoadedNum=0;
private static String filterImage="\\s+src=[\"']?[^\\s]+\\.("+WebInfo.FilterImage+")[\"']?[\\s]?";
static String savePath=WebInfo.SavePath;
static long size=WebInfo.FileSize*1000;
URL url ;
String htm="";
Main main;
boolean running;
public GetImg(String s){
htm=s;
try{
url=new URL(WebInfo.WebSite);
}catch(Exception e){
append("没有找到页面");
}
}
public GetImg(String s,URL w){
htm=s;url=w ;
}
public GetImg(String s,URL w,Main m){
htm=s;url=w ;main=m;
}
public void run(){
append("活跃线程"+Thread.activeCount()+"当前线程"+Thread.currentThread().getName());
if(htm!=null){
running=true;
Vector<Image> img=getImg(htm);
saveImgLink(img);
htm=null;
}
running =false;
}
public boolean isRunning(){
return running;
}
public void saveImgLink(Vector<Image> img){
if(img!=null){
for (int i=0;i<img.size();i++){
if(!main.getStarted()){
break;
}
append("找到图片:"+img.get(i).getURLToString());
if( saveImg(img.get(i))){
countDownLoadedNum++;
append("文件保存成功。");
}else{
append("文件保存失败。");
}
}
img=null;
}
}
public static int getImageCount(){
return countDownLoadedNum;
}
public static void clearImageCount(){
countDownLoadedNum=0;
}
public boolean saveImg(Image s){
try {
String fname=savePath+s.getCurrentURL()+"_"+s.getImageName();//+ext;
File f=new File(fname);
if(f.exists()){
append("文件已下载。");
return false;
}
URL url= s.getURL();
URLConnection connect = url.openConnection();
BufferedInputStream in =null;
BufferedOutputStream out=null;
boolean Readed;
try{
in = new BufferedInputStream(connect.getInputStream());
out=new BufferedOutputStream(new FileOutputStream(f));
byte buff[]=new byte[1024];
int bytesRead;
while(-1 != (bytesRead = in.read(buff, 0, buff.length))) {
out.write(buff,0,bytesRead);
}
Readed=true;
}catch(Exception e){
append("文件读取错误。");
if (in != null)in.close();
if (out != null)out.close();
Readed=false;
}
finally {
if (in != null)in.close();
if (out != null)out.close();
}
if(f.length()<size||!Readed){
f.delete();
append("文件太小或保存出错,被删除。");
return false;
}
append("文件被保存到目录:"+fname);
try{
Thread.sleep(50);
}catch(InterruptedException e){
append("保存被打断。");
}
return true;
} catch (MalformedURLException me) {
return false;
} catch (IOException ioe) {
return false;
}
}
public void append(String s){
main.append(s);
}
public void setMain(Main m){
main=m;
}
public Vector<Image> getImg(String s){
if (s==null)
return null;
else{
if(!main.getStarted()){
return null;
}
Vector<Image> src=new Vector<Image>();
String str=filterImage;
Pattern p=Pattern.compile(str,Pattern.CASE_INSENSITIVE);
Matcher m=p.matcher(s);
while(m.find()){
String img=m.group().toLowerCase();
img=img.substring(img.indexOf("src=")+4,img.length());
img=img.replaceAll("\"", "");
img=img.replaceAll("\'", "");
img=img.trim();
src.add(new Image(img,url));
}
return src;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -