java写的电驴下载完成关机小程序
来源:互联网 发布:雅诗兰黛淘宝旗舰店 编辑:程序博客网 时间:2024/04/28 06:19
经常用到电驴下载资料,一些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回车,安心的觉觉了.
代码有局限性,也不健壮,很多明显该添加的异常都没去管,觉得没必要,想自动关机的最简单的办法就是直接用迅雷下载.
水平有限,需要指点的地方,请留言!
- java写的电驴下载完成关机小程序
- 分享java写的电驴下载完成关机小程序
- MFC和VC++写的电脑关机小程序(源码+下载)
- java 写的一个关机小小程序
- 关机的小程序
- C语言写的控制台关机小程序
- JAVA定时关机小程序
- 批处理写的关机程序
- 定时关机小程序(JAVA)
- 用C#写定时关机的程序
- c语言写的关机程序
- 自己写的关机、注销、重启小程序
- 用Win32写的定时关机程序
- 用Win32写的定时关机程序
- 用Java写的计算器小程序
- 学习Java时写的小程序
- java自己写的一个小程序
- 用java写的俄罗斯方块小程序
- 十年一遇
- Eclipse调试常用技巧
- Java堆.栈和常量池 笔记
- Groovy MOP
- Groovy 构建命令行参数
- java写的电驴下载完成关机小程序
- Document-View结构
- 转载 写得蛮好的linux学习笔记
- 技术管理中常见的几个问题
- 闲来抽风
- 世界因你不同-李开复新书选载
- 如何学习嵌入式系统(基于ARM平台)(转)
- 程序开发与性格特征
- 房子装修与软件开发