package com.trs.web2frame.myutils;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;


public class DownloadFilesFromTxt {
	
	public static void main(String[] args) {
		getTxtData();

	}

	 public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{
			URL url = new URL(urlStr);  
			HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
	                //设置超时间为3秒
			conn.setConnectTimeout(300*1000);
			//防止屏蔽程序抓取而返回403错误
			conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
	 
			//得到输入流
			InputStream inputStream = conn.getInputStream();  
			//获取自己数组
			byte[] getData = readInputStream(inputStream);    
	 
			//文件保存位置
			File saveDir = new File(savePath);
			if(!saveDir.exists()){
				saveDir.mkdirs();
			}
			File file = new File(saveDir+File.separator+fileName);    
			FileOutputStream fos = new FileOutputStream(file);     
			fos.write(getData); 
			if(fos!=null){
				fos.close();  
			}
			if(inputStream!=null){
				inputStream.close();
			}
	 
			System.out.println("info:"+url+" download success"); 
	 
		}
	 
		/**
		 * 从输入流中获取字节数组(调用这个方法文件超大可以导致java内存溢出)
		 * @param inputStream
		 * @return
		 * @throws IOException
		 */
		public static  byte[] readInputStream(InputStream inputStream) throws IOException {  
			byte[] buffer = new byte[1024];  
			int len = 0;  
			ByteArrayOutputStream bos = new ByteArrayOutputStream();  
			while((len = inputStream.read(buffer)) != -1) {  
				bos.write(buffer, 0, len);  
			}  
			bos.close();  
			return bos.toByteArray();  
		} 
		
		public static String getTxtData() {
			//文件路径
			String filePath="C:\\Users\\admin\\Desktop\\path.txt";
	        File fileTxt=new File(filePath);
	        BufferedReader reader = null;//字符输入流进行读取操作读取
	        String tempString = null;//每一行的内容
	        int line =1;//行号
	        try {
	        	//输入字节流，FileInputStream主要用来操作文件输入流
	        	FileInputStream intput = new FileInputStream(fileTxt);
	            // System.out.println("以行为单位读取文件内容，一次读一整行：")
	        	//InputStreamReader是转换流，将字节流转成字符流
	            reader = new BufferedReader(new InputStreamReader(intput));
	            while ((tempString = reader.readLine()) != null) {
	    			try{
	    				String file = tempString.substring(tempString.lastIndexOf("/")+1,tempString.length());
	    				String rootstr = "";
	    				String type = file.substring(0, 2);
	    				if(file.startsWith("W0")||file.startsWith("P0")) {
		    				if ("W0".equals(type)) {
		    					rootstr = "webpic/";
		    				} else {
		    					rootstr = "protect/";
		    				}
		    				String first = file.substring(0, 8);
		    				String second = file.substring(0, 10);
		    				String result = "http://www.shanxi.gov.cn/" + rootstr + first + "/" + second + "/" + file;
		    				downLoadFromUrl(result,file,"D:\\download\\swf\\" +rootstr+ first + "/" + second);
		    				 System.out.println("第"+ line + "行:" +tempString);
	    				}

	    			}catch (Exception e) {
	    				// TODO: handle exception
	    			}
	                System.out.println(tempString);
	                line ++ ;
	            }
	            
	        } catch (FileNotFoundException e) {
	            e.printStackTrace();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }finally{
	            if(reader != null){
	                try {
	                    reader.close();
	                } catch (IOException e) {
	                    e.printStackTrace();
	                }
	            }
	        }
			return tempString;
		}
}
