`
isy
  • 浏览: 103257 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

java写的电驴下载完成关机小程序

    博客分类:
  • java
阅读更多
经常用到电驴下载资料,一些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回车,安心的觉觉了.

代码有局限性,也不健壮,很多明显该添加的异常都没去管,觉得没必要,想自动关机的最简单的办法就是直接用迅雷下载.
水平有限,需要指点的地方,请留言!
分享到:
评论
22 楼 lz12366 2010-05-09  
实现的方法 真的很好!读取电驴的下载文件!呵呵!!
21 楼 isy 2010-05-08  
小刘而已 写道
要是有程序阻止关机怎么办呢。。。?

当t>0时,默认执行shutdown -f命令,强制关闭所有应用程序,可能有你说的阻止关机的程序,我没进行过其他环境测试
20 楼 小刘而已 2010-05-08  
要是有程序阻止关机怎么办呢。。。?
19 楼 isy 2010-04-13  
lyw985 写道
很有想法,赞一个。

另外:资源有时候会连接不到。。。。99%,LZ就关不了机了吗?

你可以加一个方法控制最长下载时间,时间到了无论下载完成与否直接执行shutDownComputer()方法
18 楼 lyw985 2010-04-13  
很有想法,赞一个。

另外:资源有时候会连接不到。。。。99%,LZ就关不了机了吗?
17 楼 keyboard2000 2010-04-12  
电驴正在下载的文件名不是有一定规则的吗?下载完成会hash通过后把文件名改成正常的
16 楼 dplead 2010-04-12  
楼主这种精神值得学习。。。
15 楼 Checkmate 2010-04-12  
1.可以试试批处理
at+shutdown

2.貌似Java已经有一个定时类了。
14 楼 playboyb 2010-04-12  
一直用迅雷下载东东。不过楼主的想法挺好的。学习了!
13 楼 isy 2010-04-12  
fishinsky 写道
支持一下,但是不得不说脚本更简单。

原来脚本的原理是检测temp文件夹,现在新版的电驴temp文件夹里已经没有正在下载的临时文件了,所以vbs已经不起作用了.
12 楼 andy54321 2010-04-12  
现在迅雷都可以下载任意类型的资源了吧
emule、bt、ftp、http
11 楼 fishinsky 2010-04-12  
支持一下,但是不得不说脚本更简单。
10 楼 luffyke 2010-04-12  
不错,有想法就最好了
9 楼 Angel_Night 2010-04-12  
以前都是用脚本的...

但是作为java程序员 支持一下...
8 楼 greatghoul 2010-04-12  
学习这种精神,但正如楼主所说,自动关机的话,用迅雷即可,反正也可以当驴使。
7 楼 bryande 2010-04-11  
LZ的研究精神非常值得学习
6 楼 isy 2010-04-10  
dongya1987 写道
好文,程序员就要以程序员的方式解决问题

thanks
5 楼 dongya1987 2010-04-10  
好文,程序员就要以程序员的方式解决问题
4 楼 isy 2010-04-10  
helin 写道
shutdown -s -f -t 0

我控制了关机的时间,在t>0时,默认执行-f命令
3 楼 helin 2010-04-09  
shutdown -s -f -t 0

相关推荐

    C语言实现电驴下载完成后自动关机

    本篇文章介绍了一个用C语言编写的简单程序,该程序能够在检测到电驴下载完成时自动执行关机操作。 #### 知识点解析 1. **程序功能说明:** - **目标:** 该程序的主要目的是监测电驴(eMule)的临时文件夹(默认...

    电驴自动关机程序1.0

    程序目的:由于电驴软件没有下载完毕自动关机的功能,所以为了方便大家能在下载完成后自动关机节省电力资源,我就开发了一个关机外挂。希望大家能用得开心,如果发现任何bug,请联系我。 使用方法: 1. 选择你的...

    另类实现的电驴自动关机

    标题“另类实现的电驴自动关机”指的是利用一种非传统的方法来让电驴(eMule)在完成下载任务后自动关闭计算机。这种方法基于一个特定的条件,即检查下载目录中是否存在`.met`文件,这是一个eMule下载过程中产生的...

    emule电驴自动关机程序

    标题中的“emule电驴自动关机程序”指的是一个利用编程技术实现的工具,它能够监控eMule(电驴)的下载状态,并在下载任务完成后自动关闭计算机。eMule是一款流行的P2P(对等网络)文件分享软件,用户可以使用它来...

    电驴关机器 能使电驴想迅雷一样下载完关机

    由于电驴是一款资源共享软件而非下载器,所以官方一直不加入下载完成后关机,目的是下载完后提供资源给其他用户。而且官方声明以后也不会添加该功能。 为此我开发了这款软件,它可以见监控当前的下载任务,当任务...

    电驴自动关机程序源码(C#)

    标题 "电驴自动关机程序源码(C#)" 涉及到的知识点主要集中在两个核心概念:电驴(eDonkey)和自动关机程序的实现,具体使用C#编程语言来完成。电驴是一种早期流行的P2P文件共享软件,而自动关机程序则是计算机操作...

    电驴(easyMule)自动关机工具

    标题中的“电驴(easyMule)自动关机工具”是指一种专为解决easyMule软件在下载完成后无法自动关机的问题而设计的小型应用程序。EasyMule是一款基于eDonkey网络协议的P2P文件分享软件,它允许用户在全球范围内共享和...

    Java版的电驴客户端代码

    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/电驴下载地址互相转换工具”指的是一个软件程序,它能够处理不同类型的下载链接,将它们在迅雷、快车、BT(BitTorrent)和电驴(eDonkey)之间进行转换。这个工具对于用户来说非常方便,因为...

    电驴下载高积分文件

    标题中的“电驴下载高积分文件”指的是使用电驴网络(eDonkey Network)或其变种如Morpheus、Kazaa等P2P(peer-to-peer)软件进行下载时,涉及到的一种特殊资源。在电驴网络中,用户在上传文件给其他用户的同时可以...

    电驴下载方法

    ### 电驴下载方法 在互联网发展的早期阶段,电驴(eMule)作为一种非常流行的P2P(点对点)文件共享软件,受到了广大用户的欢迎。然而,随着时间的推移和技术的发展,电驴面临着越来越多的挑战,尤其是版权问题导致...

    提高电驴下载的电驴积分文件

    标题中的“提高电驴下载的电驴积分文件”暗示了我们正在讨论的内容是关于通过某种方式优化电驴(eDonkey)网络中的积分系统,以提升下载效率。电驴是一种P2P(peer-to-peer)文件共享网络,用户可以通过贡献上传流量...

    共享充电桩小程序源码+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...共享充电桩小程序源码+项目说明.zip

    电驴积分文件经测试可明显提高下载电驴资源速度

    标题和描述中提到的“电驴积分文件”是电驴(eMule)网络中一个重要的概念,它与提高下载速度密切相关。电驴是一种流行的P2P(对等网络)文件分享软件,允许用户共享和下载各种类型的文件,如电影、音乐、软件等。在...

    Delphi开发的支持电驴的下载源码

    然而,使用Delphi来实现电驴协议的下载程序源码却相对稀缺。这份“Delphi开发的支持电驴的下载源码”无疑为研究者和开发者提供了一次宝贵的实践机会。 首先,我们需要了解电驴协议。电驴是一个P2P(对等网络)文件...

    电驴提示“该内容尚未提供权利证明_无法提供下载”之解决办法详解

    标题中的问题直指电驴(eDonkey)用户在尝试下载内容时遇到的困扰,即“该内容尚未提供权利证明,无法提供下载”的错误提示。这个提示通常意味着所请求的文件可能由于版权或其他法律原因,不能被电驴网络提供。为了...

    mac 10.6.3 电驴种子

    电驴网络是一种P2P(点对点)文件分享系统,允许用户共享大文件,如应用程序、音乐、电影和软件更新。种子文件通常包含有关如何下载完整文件的信息,包括参与共享该文件的其他用户的网络地址。 描述中提到的“mac ...

    电驴下载VC++源代码

    《电驴下载VC++源代码解析》 电驴(eMule)是一款著名的P2P(Peer-to-Peer)文件共享软件,它基于Kad网络模型,为用户提供高效、稳定的文件下载服务。本文将深入探讨eMule的VC++源代码,揭示其背后的网络连接、文件...

    emule电驴下载加速器 emule下载加速器

    emule电驴下载加速器 emlule下载加速器 下载加速emule电驴下载加速器 emlule下载加速器 下载加速

Global site tag (gtag.js) - Google Analytics