经常用到电驴下载资料,一些http你根本找不到的资源,当然速度是不能恭维了,驴子么,干的就是慢活,热门资源除外…
我用的verycd版的电驴,原版电驴的一种mods,电驴貌似有N多版本,不过我觉得verycd的就够用了,毕竟国内八成的人都在用.
最近在下新东方的新概念英语教程,进度87%,眼看要下完了,等要等1个多小时,下载完成又不自动关机,很是苦恼,虽然verycd一直提倡共享互联网,下载完成关机也是违背了电驴的分享精神,可国家还一直提倡节能减排呢,机箱嗡嗡响也耽误我的睡眠质量…再三矛盾之下,还是决定写一个小程序备用.我开机的时候接着分享就是了.
刚开始搜了一下网上的自动关机程序,真是天下文章一大抄,看的最多的版本就是检测根目录下的temp文件夹,用vbs脚本编写,还有其他的版本,反正是没找到可以用的,自己翻了翻temp文件夹,发现里面什么都没有….这文章也够陈旧的了,自己研究下verycd下载套路,发现一个downloads.txt文件同步正在下载的资源信息,下载完成后自动删除里面的记录,这就简单多了.
思路:读downloads.txt文件,利用关键字把里面的记录分割后加入list,选择监视的文件名,利用while循环的倒计时方法以文件名为关键字从list里定时搜索,如果下载完成,调用runtime类运行dos命令shutdown,执行关机.代码如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
/**
* @author Y 2010/04/01 23:39
*/
public class ShutDown {
// easyMule下downloads.txt文件的路径
public static final String FILEPATH = “D:\\Program Files\\easyMule\\downloads.txt”;
// 查找下载记录数的关键字
public static final String KEYWORD = “ed2k://|file|”;
// 刷新读入downloads.txt的时间(秒)
int second = 5;
// 下载完成后关机的延迟时间(秒)
int times = 60;
// 需要监视的文件id号
int id;
// 监视的文件名称
String fileName;
public ShutDown() {
System.out.println(“当前的下载文件信息为:”);
System.out
.println(“————————————————————–”);
showFile(readText(FILEPATH, KEYWORD));
System.out
.println(“————————————————————–”);
System.out.println(“要等哪个文件下载完成关闭计算机?”);
Scanner scan = new Scanner(System.in);
id = scan.nextInt() – 1;
fileName = (String) readText(FILEPATH, KEYWORD).get(id);
System.out.println(“监视的文件是:” + fileName);
while (countDown(second)) {
if (readText(FILEPATH, fileName).size() == 0) {
shutDownComputer(times);
System.out.println(“计算机将在” + times + “秒内关闭”);
System.out.println(“输入任意内容可取消关闭计算机”);
if (null != scan.next()) {
unShutDownComputer();
}
break;
}
}
}
// 利用线程休眠进行倒计时
public boolean countDown(int second) {
for (int i = second; i >= 0; i–) {
try {
Thread.sleep(1000);
if (i == 0) {
return true;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return false;
}
// 读取文件,查找下载的条目,返回List集合
public List readText(String filePath, String searchWord) {
List list = new ArrayList();
File file = new File(filePath);
InputStreamReader reader = null;
BufferedReader br = null;
try {
// downloads.txt文件采用Unicode编码,需要转码
reader = new InputStreamReader(new FileInputStream(file), “utf-16″);
br = new BufferedReader(reader);
String s1 = null;
while ((s1 = br.readLine()) != null) {
int position = s1.indexOf(searchWord);
if (position != -1) {
s1 = s1.substring(0, position).trim();
list.add(s1);
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
// 查看当前下载的记录数
public void showFile(List list) {
Iterator iter = list.iterator();
int count = 1;
while (iter.hasNext()) {
System.out.println(count + “=>” + iter.next());
count++;
}
}
// 关闭计算机
public void shutDownComputer(int times) {
Runtime run = Runtime.getRuntime();
try {
run.exec(“shutdown -s -t” + ” ” + times);
} catch (IOException e) {
e.printStackTrace();
}
}
// 取消关闭计算机
public void unShutDownComputer() {
Runtime run = Runtime.getRuntime();
try {
run.exec(“shutdown -a”);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ShutDown();
}
}
本想用property文件存配置信息,闲麻烦就没加,其实就用到倒计时和查询关键字2个方法就可以,用不着用scanner扫描键盘的录入.下载的时候cmd窗口开着,java ShutDown回车,安心的觉觉了.
代码有局限性,也不健壮,很多明显该添加的异常都没去管,觉得没必要,想自动关机的最简单的办法就是直接用迅雷下载.
水平有限,需要指点的地方,请留言!
分享到:
相关推荐
C语言实现电驴下载完成后自动关机,代码比较简单,感兴趣的可以看看!
程序目的:由于电驴软件没有下载完毕自动关机的功能,所以为了方便大家能在下载完成后自动关机节省电力资源,我就开发了一个关机外挂。希望大家能用得开心,如果发现任何bug,请联系我。 使用方法: 1. 选择你的...
由于电驴是一款资源共享软件而非下载器,所以官方一直不加入下载完成后关机,目的是下载完后提供资源给其他用户。而且官方声明以后也不会添加该功能。 为此我开发了这款软件,它可以见监控当前的下载任务,当任务...
以定时检测下载目录内是否存在*.met为基础,实现电驴完成下载后自动关机的功能。
Java版的电驴客户端代码 JMule - is a Java based client for eDonkey2000 networks. Using JMule, you will be able to share your files with anybody in the world. This client is completely free and the ...
非常粗糙简单的小程序,通过检测emule的临时文件夹是否为空来判断emule是否下载完成
由于电驴官方鼓励尽量多的上传,所以不提供下载完关机的功能。于是我自己写了个小工具来实现这个功能。
自动获得电驴的安装路径,也可以自己设置,0.48a以上的版本没测试过,其他版本应该也是可以用的,只要设置路径时设置成电驴安装目录下的temp文件夹就可以了!
我的电驴积分文件提高电驴下载的电驴积分文件
迅雷/快车/BT/电驴下载地址互相转换工具,可以加密下载地址。
大家都碰到电驴现在的资源无法下载的情况把,现在有新方法,希望大家能找到自己需要的东东啊 ,电驴资源下载新方法
用迅雷下载电驴资源的好东西,,各位驴友可以好好下载不会被封了
电驴积分文件经测试可明显提高下载电驴资源速度
emule电驴下载加速器 emlule下载加速器 下载加速emule电驴下载加速器 emlule下载加速器 下载加速
网上非常难得的电驴协议下载程序源代码,Delphi的类似程序源码很少,这应该算是一份比较珍贵的源代码了。需要的拿去吧!
最新电驴源码下载6.99M 经常从网络下载软件的人,都使用过电驴,很好用,这就是eMule的VC源程序。
电驴提示“该内容尚未提供权利证明_无法提供下载”之解决办法详解
解决电驴搜索到的资源无法下载的办法,经使用真实有效
easyMule电驴下载工具 非常好用耶 尤其是各种电影
玩转电驴(电驴下载全攻略) 30页 1) eMule对Windows有什么要求? eMule能在Windows 95版本以上的Windows操作系统下运行。 1个好的P2P软件需要好的拨号网络的支持,所以Windows 98和Windows ME的比较差网络运行情况...