`
kong0itey
  • 浏览: 299788 次
社区版块
存档分类
最新评论

应用程序安装目录的快速查找算法

    博客分类:
  • java
阅读更多
采用特征文件名匹配的办法查找:

import java.io.*;
import java.util.*;

public class Test {

	public static String searchMirDirectory() {
		final int MAX_LEVEL = 10;
		List<File> fileList = new ArrayList<File>();
		fileList.add(new File("C:"));
		fileList.add(new File("D:"));
		fileList.add(new File("E:"));
		int level = 0;
		while (level < MAX_LEVEL) {
			List<File> tempList = new ArrayList<File>();
			for (File file : fileList) {
				File[] mirFiles = file.listFiles(new FileFilter() {
					public boolean accept(File pathname) {
						if (pathname.isDirectory())
							return true;
						if (pathname.isFile()) {
							String name = pathname.getName();
							return name.equalsIgnoreCase("mir.exe")
									|| name.equalsIgnoreCase("uninst.exe")
									|| name.equalsIgnoreCase("mirsettings.exe");
						}
						return false;
					}
				});
				if (mirFiles == null)
					continue;
				if (mirFiles.length >= 6 && mirFiles.length <= 20) {
					int count = 0;
					for (File mirFile : mirFiles) {
						String name = mirFile.getName();
						if (name.equalsIgnoreCase("Data")
								|| name.equalsIgnoreCase("Map")
								|| name.equalsIgnoreCase("Wav"))
							count++;
					}
					if (count == 3)
						return file.getPath();
				}
				for (File mirFile : mirFiles) {
					if (mirFile.isDirectory())
						tempList.add(mirFile);
				}
				// System.out.println(file.getPath());
			}
			fileList = tempList;
			level++;
		}
		return null;
	}

	public static void main(String[] args) {
		double sum = 0;
		int TOTAL = 40;
		for (int i = 0; i < TOTAL; i++) {
			long t1 = System.currentTimeMillis();
			String path = searchMirDirectory();
			long t2 = System.currentTimeMillis();
			double d = ((t2 - t1) / 1000.0d);
			sum += d;
			System.out.println("找到传奇客户端:" + path + ",耗时" + d + "秒");
		}
		System.out
				.println("平均耗时:" + ((int) (sum / TOTAL * 1000)) / 1000d + "秒");
	}
}


找到传奇客户端:E:\游戏\热血传奇,耗时0.781秒
找到传奇客户端:E:\游戏\热血传奇,耗时0.781秒
找到传奇客户端:E:\游戏\热血传奇,耗时0.829秒
......
找到传奇客户端:E:\游戏\热血传奇,耗时0.781秒
平均耗时:0.791秒
分享到:
评论

相关推荐

    专业程序卸载工具 Uninstall Tool 3.5.10 Build 5670+ x64.zip

    安装监视器可以监视每个应用程序的安装,实时监视应用程序安装在系统中的任何文件及注册表项目,当您使用Uninstall Tool卸载软件时,它会更加彻底的将其删除干净,不留痕迹!软件本身还带有管理系统随机启动程序工具...

    英特尔驱动程序更新实用程序_ V2.0.0.30 官方版

    应用程序 &gt; Intel Driver Update Utility 2 0 有关使用英特尔 驱动程序更新实用程序的更多指示 请参见常见问题解答:如何使用英特尔 驱动程序更新实用程序 为什么英特尔驱动程序更新实用程序不能识别我的系统...

    Uninstall Tool 3.3.2 Build 5314 天涯浪子

    安装监视器可以监视每个应用程序的安装,实时监视应用程序安装在系统中的任何文件及注册表项目,当您使用Uninstall Tool卸载软件时,它会更加彻底的将其删除干净,不留痕迹!软件本身还带有管理系统随机启动程序工具...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    5.1.4 应用程序目录结构 5.2 global.asax应用程序文件 5.2.1 应用程序事件 5.2.2 演示应用程序事件 5.3 ASP.NET配置 5.3.1 machine.config文件 5.3.2 web.config文件 5.3.3 设置 5.3.4 5.3.5 ...

    Delphi开发范例宝典目录

    实例181 获取应用程序所在目录 233 实例182 得到系统当前目录 234 实例183 在程序中改变当前路径 235 5.5 复制文件 236 实例184 移动正在使用的文件 236 实例185 批量复制文件 237 实例186 文件复制...

    C#程序开发范例宝典(第2版).part08

    实例218 获取应用程序所在目录 305 实例219 得到系统当前目录 306 实例220 在程序中改变当前路径 307 6.5 复制文件 307 实例221 使用FileStream复制大文件 308 实例222 复制文件时显示复制进度 310 实例223 ...

    计算机应用2作业2.doc

    双击某类扩展名的文件,操作系统可启动相关的应用程序 c. 删除应用程序快捷图标时,会连同其所对应的程序文件一同删除 d. 设置文件夹属性时,可以将属性应用于其包含的所有文件和子文件夹 题目4 下列不是汉字输入法...

    微软活动目录管理管理简明手册

    与组策略相结合,活动目录可以使管理者使用同样的管理界面管理分布式桌面、网络服务和来自中心位置的应用程序。活动目录同时提供对网络资源集中控制,允许用户只登录一次就可以访问整个活动目录的资源。/ [) F0 b& {...

    vc++ 应用源码包_1

    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...

    C#程序开发范例宝典(第2版).part12

    实例218 获取应用程序所在目录 305 实例219 得到系统当前目录 306 实例220 在程序中改变当前路径 307 6.5 复制文件 307 实例221 使用FileStream复制大文件 308 实例222 复制文件时显示复制进度 310 实例223 ...

    天大19秋《计算机应用基础》在线作业一.docx

    在应用程序之间相互切换 18.将文件移至剪贴板的快捷键是( ) A.Ctrl+S B.Ctrl+X C.Ctrl+V D.Ctrl+C 19.输出速度最快的打印机是( ) 天大19秋《计算机应用基础》在线作业一全文共6页,当前为第5页。A.点阵打印机 B....

    autoRIFT:快速智能算法的Python模块,用于查找两个图像之间的像素位移

    autoRIFT(自主重复图像功能跟踪)更新说明: + parallel computing for NCC+ support for remote ...用例包括所有密集特征跟踪应用程序,包括测量由于冰川流动,大地震位移和滑坡而在两个重复卫星图像之间发生的表

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    Excel在财务管理中的应用.iso (随书光盘)

    2.2.2 数据的查找和替换 39 2.2.3 撤销与恢复数据 42 2.3 数据的有效性 45 2.3.1 限制录入条件 45 2.3.2 圈释无效数据 48 2.4 数据的保护 49 2.4.1 保护工作簿 50 2.4.2 保护工作表 51 2.4.3 保护单元格 53 第3章 ...

    C#程序开发范例宝典(第2版).part13

    实例218 获取应用程序所在目录 305 实例219 得到系统当前目录 306 实例220 在程序中改变当前路径 307 6.5 复制文件 307 实例221 使用FileStream复制大文件 308 实例222 复制文件时显示复制进度 310 实例223 ...

Global site tag (gtag.js) - Google Analytics