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

java电驴_java写的电驴下载完成关机小程序经常用到电驴下载资料 一些 http 你根本找不到的资源 当然速度是不能恭维了 驴子么 干的就是慢活 热门资源除外 我用的 verycd 版的电驴 原版电驴的一种 mods 电驴貌似有 N 多版本 不过我觉得 verycd 的就够用了 毕竟国内八成的人都在用 最近在下新东方的新概念英语教程 进度 87 眼看要下完了 等要等 1 个多小时 下载完成又不自动关机 很是苦恼 虽然 verycd 一直提倡共享互联网 下载完成关机也

经常用到电驴下载资料,一些http你根本找不到的资源,当然速度是不能恭维了,驴子么,干的就是慢活,热门资源除外…

我用的verycd版的电驴,原版电驴的一种mods,电驴貌似有N多版本,不过我觉得verycd的就够用了,毕竟国内八成的人都在用.

最近在下新东方的新概念英语教程,进度87%,眼看要下完了,等要等1个多小时,下载完成又不自动关机,很是苦恼,虽然verycd一直提倡共享互联网,下载完成关机也是违背了电驴的分享精神,可国家还一直提倡节能减排呢,机箱嗡嗡响也耽误我的睡眠质量…再三矛盾之下,还是决定写一个小程序备用.我开机的时候接着分享就是了.

刚开始搜了一下网上的自动关机程序,真是天下文章一大抄,看的最多的版本就是检测根目录下的temp文件夹,用vbs脚本编写,还有其他的版本,反正是没找到可以用的,自己翻了翻temp文件夹,发现里面什么都没有….这文章也够陈旧的了,自己研究下verycd下载套路,发现一个downloads.txt文件同步正在下载的资源信息,下载完成后自动删除里面的记录,这就简单多了.

思路:读downloads.txt文件,利用关键字把里面的记录分割后加入list,选择监视的文件名,利用while循环的倒计时方法以文件名为关键字从list里定时搜索,如果下载完成,调用runtime类运行dos命令shutdown,执行关机.代码如下:

Java代码

0818b9ca8b590ca3270a3433284dd417.png

importjava.io.BufferedReader;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.UnsupportedEncodingException;

importjava.util.ArrayList;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Scanner;

/

* @author Y 2010/04/01 23:39

*/

publicclassShutDown {

// easyMule下downloads.txt文件的路径

publicstaticfinalString FILEPATH = “D://Program Files//easyMule//downloads.txt”;

// 查找下载记录数的关键字

publicstaticfinalString KEYWORD = “ed2k://|file|”;

// 刷新读入downloads.txt的时间(秒)

intsecond =5;

// 下载完成后关机的延迟时间(秒)

inttimes =60;

// 需要监视的文件id号

intid;

// 监视的文件名称

String fileName;

publicShutDown() {

System.out.println(“当前的下载文件信息为:”);

System.out

.println(“————————————————————–”);

showFile(readText(FILEPATH, KEYWORD));

System.out

.println(“————————————————————–”);

System.out.println(“要等哪个文件下载完成关闭计算机?”);

Scanner scan =newScanner(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;

}

}

}

// 利用线程休眠进行倒计时

publicbooleancountDown(intsecond) {

for(inti = second; i >=0; i–) {

try{

Thread.sleep(1000);

if(i ==0) {

returntrue;

}

}catch(InterruptedException e) {

e.printStackTrace();

}

}

returnfalse;

}

// 读取文件,查找下载的条目,返回List集合

publicList readText(String filePath, String searchWord) {

List list =newArrayList();

File file =newFile(filePath);

InputStreamReader reader =null;

BufferedReader br =null;

try{

// downloads.txt文件采用Unicode编码,需要转码

reader =newInputStreamReader(newFileInputStream(file), “utf-16″);

br =newBufferedReader(reader);

String s1 =null;

while((s1 = br.readLine()) !=null) {

intposition = 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();

}

}

returnlist;

}

// 查看当前下载的记录数

publicvoidshowFile(List list) {

Iterator iter = list.iterator();

intcount =1;

while(iter.hasNext()) {

System.out.println(count + “=>” + iter.next());

count++;

}

}

// 关闭计算机

publicvoidshutDownComputer(inttimes) {

Runtime run = Runtime.getRuntime();

try{

run.exec(“shutdown -s -t” + ” ” + times);

}catch(IOException e) {

e.printStackTrace();

}

}

// 取消关闭计算机

publicvoidunShutDownComputer() {

Runtime run = Runtime.getRuntime();

try{

run.exec(“shutdown -a”);

}catch(IOException e) {

e.printStackTrace();

}

}

publicstaticvoidmain(String[] args) {

newShutDown();

}

}

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回车,安心的觉觉了. 代码有局限性,也不健壮,很多明显该添加的异常都没去管,觉得没必要,想自动关机的最简单的办法就是直接用迅雷下载. 水平有限,需要指点的地方,请留言!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216365.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午12:00
下一篇 2026年3月18日 下午12:00


相关推荐

  • 微信小程序显示富文本_微信小程序div

    微信小程序显示富文本_微信小程序divwxParse方法我踩雷了微信官方文档有个更为便捷的标签<rich-textnodes=”{{}}”></rich-text>

    2022年8月18日
    13
  • jdk动态代理和cglib动态代理详解

    jdk动态代理和cglib动态代理详解本文内容概括:静态代理概述 基于继承方式实现静态代理 基于聚合方式实现静态代理 jdk动态代理实现 如何实现一个HashMap的动态代理类 cglib动态代理实现 jdk和cglib代理的区别 动态代理和静态代理的区别 spring如何选择jdk和cglib代理如上图,代理模式可分为动态代理和静态代理,我们比较常用的有动态代理中的jdk动态代理和Cglib代理,像spr…

    2022年5月16日
    41
  • SynchronousQueue详解「建议收藏」

    SynchronousQueue详解「建议收藏」SynchronousQueue是BlockingQueue的一种,所以SynchronousQueue是线程安全的。SynchronousQueue和其他的BlockingQueue不同的是SynchronousQueue的capacity是0。即SynchronousQueue不存储任何元素。也就是说SynchronousQueue的每一次insert操作,必须等待其他线性的remove操作。而每一个remove操作也必须等待其他线程的insert操作。这种特性可以让我们想起了Exchanger

    2022年6月22日
    36
  • C++调用Lua教程

    C++调用Lua教程配置首先打开你的 VC6 因为我的是汉化版的 所以我就以汉化版的提示来说明 如果你的是英文版的 那么不请自己找对应的项目了 i msosorry 在 VC6 0 的菜单里找到工具 选项 目录选项卡 然后把对应的 nbsp h nbsp 文件和 nbsp lib nbsp 文件给添加进去 就是刚才让记住的路径里 具体的我就不多说了 添加好之后 就确定 如果你还安装了 nbsp VisualAssist nbsp 那么也要在

    2026年3月26日
    3
  • IntelliJ IDEA 更换背景图和背景颜色

    IntelliJ IDEA 更换背景图和背景颜色IntelliJIDEA 更换背景图和背景颜色

    2026年3月19日
    2
  • Idea激活码最新教程2019.3.3版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2019.3.3版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2019 3 3 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2019 3 3 成功激活

    2025年5月23日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号