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

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回车,安心的觉觉了.

代码有局限性,也不健壮,很多明显该添加的异常都没去管,觉得没必要,想自动关机的最简单的办法就是直接用迅雷下载.

水平有限,需要指点的地方,请留言!

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-04-09 14:47

浏览 1486

论坛回复 / 浏览 (22 / 9187)

评论

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

75a3bf8974c9bd5a56863a745113d139.gif

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

« 上一页 1 2 下一页 »

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值