⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getimg.java

📁 用来下载网上图片
💻 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 + -