Java下载-3

package cn.******.*****.***.*******;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
/**
 * 修改web
 * 修改type
 * 修改version
 * 修改kinleStr
 * 修改download参数一盘符
 * 
 */
public class tsDown {

	static String kinleStr[] = {"", ".m3u8.", "-"};
	static String version[] = {"v1", "v2", "v3"};
	static String type[] = {"mp4", "ts", "video"};
	static String web = ".*****.com/";
	
	public static void main(String[] args) throws IOException {

		downloadTS("F",101,800,"8e19e9a74b",1,400,2);

	}

	/**
	 * 葫芦娃、葫芦娃、合体
	 * @param souPath 源路径
	 * @param tarPath 目标路径
	 * @param newFileName 合成文件名
	 */
	public static void synthesisTemp(String souPath,String tarPath,String newFileName){
		/* 合成TS文件*/
		//synthesisTemp(path + code,path,code);

		if(newFileName.equals("")){ //如果为空,则默认获取文件名文文件夹名

		}
		execCMD("copy /b "+souPath+"\\*.ts "+tarPath+newFileName+".ts");
		System.out.println("copy /b "+souPath+"\\*.ts "+tarPath+newFileName+".ts");
		System.out.println("合成完成!");
	}

	/**
	 * 我种下一个苹果,终于得到一堆
	 * @param pan
	 * @param indexMain
	 * @param indexSub
	 * @param code
	 * @param number
	 * @param indexMax
	 * @param verNum
	 * @throws IOException
	 */
	private static void downloadTS(String pan,int indexMain,int indexSub,String code,int number,int indexMax, int verNum) throws IOException{
		createFolder(code);
		int n = 0;
		if(number!=0){
			n = number;
		}
		//下载执行体
		for(;n<indexMax+1;n++){
			//判断文件是否存在,即下载中或下载成功
			File fileExists = new File(pan+":\\"+code+"\\"+code + kinleStr[verNum] + num(n)
					+ kinleStr[verNum]
					+ code + kinleStr[verNum] + num(n) +".ts");

			if(noExists(fileExists)){

				String tempZeroNumber = num(n); //初始化 临时变量体零数

				//规则 .m3u8.
				if(kinleStr[verNum].equals(".m3u8.")){
					if(n==0 || n==number)System.out.println("以\".\"为规则,执行下载体");
					String resp = execCMD("dl "
							+ "--exec \"move {} "
							+pan+":\\"
							+code+"\\{}\" http://" + version[verNum] + web + type[verNum] + "/"
							+indexMain+"/"
							+indexSub+"/"
							+code+kinleStr[verNum]
							+n+".ts");
				}

				//规则 -
				if(kinleStr[verNum].equals("-")){
					if(n==0 || n==number) System.out.println("以\"-\"为规则,执行下载体.(" + (n==0 || n==number) + ")");

					String resp = execCMD("dl "
							+ "--exec \"move {} "+pan+":\\"
							+code+"\\{}\" http://" + version[verNum] + web + type[verNum] + "/"
							+indexMain+"/"
							+indexSub+"/"
							+code+kinleStr[verNum]
							+tempZeroNumber+".ts");
				}
				
				//判断文件是否存在,即下载中或下载成功
				File fileDownSucc = new File(pan+":\\"+code+"\\"+code + kinleStr[verNum] + tempZeroNumber
																+ kinleStr[verNum]
																+ code + kinleStr[verNum] + tempZeroNumber +".ts");

				if(!fileDownSucc.exists()){
					System.err.println("正在执行(已执行"+n+"次),已完成  "+((float)n/indexMax*100)+"%"+", 下载失败:"+ code+kinleStr[verNum] +tempZeroNumber+".ts");
					n--;
				}else {
					System.out.println("正在执行(已执行" + n + "次),已完成  " + ((float) n / indexMax * 100) + "%");
				}

			}
		} //循环结束

		System.out.println("下载结束! ");
	}

	/**
	 * 看什么看,编号而已
	 * @param n
	 * @return
	 */
	private static String num(int n){
		if(n>999) return "0"+n;
		else if(n>99) return "00"+n;
		else if(n>9) return "000"+n;
		else if(n>-1) return "0000"+n;
		else return "系统异常";
	}

	/**
	 *  看一下文件是不是不在
	 * @param file 给我地址啊,要不然怎么约会?
	 * @return 如果不在,返回true;如果在,返回false
	 */
	private static boolean noExists(File file){
		if(file.exists()){
			System.out.println("该文件已存在,跳过...");
			return false;
		}else{
			return true;
		}
	}

	/**
	 * 我可不可以横道夺爱?
	 * @param indexMain 哪个省份
	 * @param indexSub 哪个城市
	 * @param folder 欲横道夺爱的人
	 * @param number 到底要不到中间插一脚?
	 * @param indexMax 这个世界人口就这么多
	 * @throws IOException
	 */
	public static void downloadTS(int indexMain,int indexSub,String folder,int number,int indexMax, String kinleStr, String version, String type) throws IOException{

		//downloadTS(101,800,code,1,400,2);
		//downloadTS(65,896,code,0,400,"-","v3","video");

		createFolder(folder);
		int n = 0;
		if(number!=0){
			n = number;
		}

		//下载执行体
		for(;n<indexMax+1;n++){
			System.out.println("正在执行(已执行"+n+"次),已完成  "+((float)n/indexMax*100)+"%");

			if(kinleStr.equals(".")){
				if(n==0 || n==number){System.out.println("以\".\"为规则,执行下载体");}
				String resp = execCMD("dl "
						+ "--exec \"move {} H:\\"
						+folder+"\\{}\" http://" + version + web + type + "/"
						+indexMain+"/"
						+indexSub+"/"
						+folder+".m3u8."
						+n+".ts");
				System.out.println(resp);

			}

			if(kinleStr.equals("-")){
				String tempZeroNumber = ""; //初始化 临时变量体零数
				if(n==0 || n==number){System.out.println("以\"-\"为规则,执行下载体.(" + (n==0 || n==number) + ")");}
				tempZeroNumber=num(n);
		
				String resp = execCMD("dl "
						+ "--exec \"move {} H:\\"
						+folder+"\\{}\" http://" + version + web + type + "/"
						+indexMain+"/"
						+indexSub+"/"
						+folder+kinleStr
						+tempZeroNumber+".ts");
				System.out.println(resp);
			}
		}

		//下载结束提示语
		System.out.println("下载结束! ");
	}

    /**
     * 男孩纸生个宝宝不过分吧?
      * @param folder
     * @throws IOException
     */
	private static boolean createFolder(String folder) throws IOException{
		File file = new File("F:\\"+folder);
		System.out.println("F:\\"+folder);
		if(!file.exists()){
			file.mkdir();
			System.out.println("文件夹"+folder+"创建成功");
			return true;
		}else{
			System.out.println("文件夹"+folder+"已经存在");
			return false;
		}
	}

    /**
     *  不检查DNA
     * @param command
     * @return 返回字符串
     */
	private static String execCMD(String command) {
        StringBuilder sb =new StringBuilder();
        try {
            Process process=Runtime.getRuntime().exec(command);
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while((line=bufferedReader.readLine())!=null)
            {
                sb.append(line+"\n");
            }
        } catch (Exception e) {
            return e.toString();
        }
        return sb.toString();
    }


	/**
	 * 检查DNA
	 * @param command
	 * @param encode
	 * @return
	 */
	private static String execCMD(String command,String encode) {

		StringBuilder sb =new StringBuilder();
		try {
			// 执行ping命令
			Process process = Runtime.getRuntime().exec(command);
			BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), Charset.forName(encode)));
			String line = null;
			while ((line = br.readLine()) != null) {
				//System.out.println(line);
				sb.append(line+"\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return sb.toString();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值