经常用到电驴下载资料,一些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语言编写的简单程序,该程序能够在检测到电驴下载完成时自动执行关机操作。 #### 知识点解析 1. **程序功能说明:** - **目标:** 该程序的主要目的是监测电驴(eMule)的临时文件夹(默认...
程序目的:由于电驴软件没有下载完毕自动关机的功能,所以为了方便大家能在下载完成后自动关机节省电力资源,我就开发了一个关机外挂。希望大家能用得开心,如果发现任何bug,请联系我。 使用方法: 1. 选择你的...
标题“另类实现的电驴自动关机”指的是利用一种非传统的方法来让电驴(eMule)在完成下载任务后自动关闭计算机。这种方法基于一个特定的条件,即检查下载目录中是否存在`.met`文件,这是一个eMule下载过程中产生的...
标题中的“emule电驴自动关机程序”指的是一个利用编程技术实现的工具,它能够监控eMule(电驴)的下载状态,并在下载任务完成后自动关闭计算机。eMule是一款流行的P2P(对等网络)文件分享软件,用户可以使用它来...
由于电驴是一款资源共享软件而非下载器,所以官方一直不加入下载完成后关机,目的是下载完后提供资源给其他用户。而且官方声明以后也不会添加该功能。 为此我开发了这款软件,它可以见监控当前的下载任务,当任务...
标题 "电驴自动关机程序源码(C#)" 涉及到的知识点主要集中在两个核心概念:电驴(eDonkey)和自动关机程序的实现,具体使用C#编程语言来完成。电驴是一种早期流行的P2P文件共享软件,而自动关机程序则是计算机操作...
标题中的“电驴(easyMule)自动关机工具”是指一种专为解决easyMule软件在下载完成后无法自动关机的问题而设计的小型应用程序。EasyMule是一款基于eDonkey网络协议的P2P文件分享软件,它允许用户在全球范围内共享和...
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 ...
在IT领域,电驴(eMule)是一种非常流行的P2P(peer-to-peer)文件共享软件,允许用户从全球的网络中下载和分享各种类型的文件。然而,有时用户可能会遇到资源无法下载的问题,这可能是由于多种原因引起的。本文将...
标题中的“迅雷/快车/BT/电驴下载地址互相转换工具”指的是一个软件程序,它能够处理不同类型的下载链接,将它们在迅雷、快车、BT(BitTorrent)和电驴(eDonkey)之间进行转换。这个工具对于用户来说非常方便,因为...
标题中的“电驴下载高积分文件”指的是使用电驴网络(eDonkey Network)或其变种如Morpheus、Kazaa等P2P(peer-to-peer)软件进行下载时,涉及到的一种特殊资源。在电驴网络中,用户在上传文件给其他用户的同时可以...
### 电驴下载方法 在互联网发展的早期阶段,电驴(eMule)作为一种非常流行的P2P(点对点)文件共享软件,受到了广大用户的欢迎。然而,随着时间的推移和技术的发展,电驴面临着越来越多的挑战,尤其是版权问题导致...
标题中的“提高电驴下载的电驴积分文件”暗示了我们正在讨论的内容是关于通过某种方式优化电驴(eDonkey)网络中的积分系统,以提升下载效率。电驴是一种P2P(peer-to-peer)文件共享网络,用户可以通过贡献上传流量...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...共享充电桩小程序源码+项目说明.zip
标题和描述中提到的“电驴积分文件”是电驴(eMule)网络中一个重要的概念,它与提高下载速度密切相关。电驴是一种流行的P2P(对等网络)文件分享软件,允许用户共享和下载各种类型的文件,如电影、音乐、软件等。在...
然而,使用Delphi来实现电驴协议的下载程序源码却相对稀缺。这份“Delphi开发的支持电驴的下载源码”无疑为研究者和开发者提供了一次宝贵的实践机会。 首先,我们需要了解电驴协议。电驴是一个P2P(对等网络)文件...
标题中的问题直指电驴(eDonkey)用户在尝试下载内容时遇到的困扰,即“该内容尚未提供权利证明,无法提供下载”的错误提示。这个提示通常意味着所请求的文件可能由于版权或其他法律原因,不能被电驴网络提供。为了...
电驴网络是一种P2P(点对点)文件分享系统,允许用户共享大文件,如应用程序、音乐、电影和软件更新。种子文件通常包含有关如何下载完整文件的信息,包括参与共享该文件的其他用户的网络地址。 描述中提到的“mac ...
《电驴下载VC++源代码解析》 电驴(eMule)是一款著名的P2P(Peer-to-Peer)文件共享软件,它基于Kad网络模型,为用户提供高效、稳定的文件下载服务。本文将深入探讨eMule的VC++源代码,揭示其背后的网络连接、文件...
emule电驴下载加速器 emlule下载加速器 下载加速emule电驴下载加速器 emlule下载加速器 下载加速