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

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

    博客分类:
  • 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秒
分享到:
评论

相关推荐

    快速查找文件软件

    标题中的“快速查找文件软件”指的是能够高效地在计算机中搜索和定位文件的应用程序。这类软件通常具有先进的索引技术和快速的搜索算法,使得用户能在海量的文件中迅速找到目标文件,极大地提高了工作效率。 描述中...

    WebLogic部署应用程序(图解).

    当WebLogic Server运行时,它会定期扫描`&lt;domain-name&gt;/applications`目录,查找新添加或更新的应用程序文件,自动进行部署。这种方式适用于快速迭代的开发环境。 2. **手动本地部署** 在WebLogic Server控制台...

    快速查找文件的小工具

    标题中的“快速查找文件的小工具”指的是一个专为提高文件搜索效率而设计的应用程序。它通过预先收集并索引用户计算机中的所有文件名,来实现快速的文件定位功能。这样的工具对于那些处理大量文件或者经常需要查找...

    android应用程序开发

    在本文中,我们将深入探讨如何进行Android应用程序开发,特别是针对手机通信录的实现。这个项目旨在创建一个功能齐全的通信录应用,用户可以添加、删除、编辑联系人,查看联系人列表,以及直接拨打电话和发送短信给...

    本地文件快速查找

    在实际应用中,本地文件快速查找不仅适用于个人用户日常的文件管理,也广泛应用于企业环境中,如IT管理员查找服务器上的特定文件,或是开发者在项目中定位代码文件。熟练掌握这类工具的使用,能极大提高工作效率,...

    文件快速查找工具小巧好用

    从压缩包子文件的文件名称“文件快速查找.exe”来看,这可能是一个可执行文件,表明这是一个独立的应用程序,用户可以直接运行而无需安装其他依赖。通常,.exe文件是Windows操作系统下的可执行程序,意味着该工具...

    Windows应用程序公用对话框模块

    通过注册这个控件,开发者可以在Visual Basic、VB.NET、VC++、Delphi等支持ActiveX的开发环境中调用其提供的函数和方法,快速构建具有对话框功能的应用程序。 在Windows应用程序开发中,公用对话框模块提供以下关键...

    无驱摄像头最新应用程序

    无驱摄像头最新应用程序是针对现代计算机用户设计的一款高效便捷的软件解决方案,旨在让用户无需安装额外的驱动程序即可在电脑上快速、轻松地使用摄像头。这一创新技术极大地简化了摄像头的使用流程,使得无论是在...

    Android应用程序开发宝典-基于TE&OK6410;.pdf

    此文档不仅覆盖了基本的Android应用程序开发流程,而且还提供了具体的案例分析和技术指导,使读者能够快速理解和应用这些知识。 #### 二、Android系统应用环境搭建 **2-1 UBUNTU10.10上编译ANDROID源码** - **2-1...

    方便快捷的文件快速查找器

    对于压缩包子文件的文件名称列表“文件快速查找器”,这可能是该查找器的安装程序或更新包。用户可以下载并安装这个文件,以获取这款便捷的文件查找工具。安装过程一般包括解压、运行安装向导、接受许可协议、选择...

    桌面应用程序管理器

    在日常使用计算机时,随着安装的应用程序数量增加,桌面往往会变得杂乱无章,寻找需要启动的软件变得费时费力。"桌面应用程序管理器"就是为了应对这一挑战,它允许用户将所有的应用程序快捷方式整合到一个统一的界面...

    plsqldeveloper+中文应用程序

    - 下载提供的"plsqldeveloper+中文应用程序"压缩包后,解压到指定目录。 - 按照安装向导的指示进行操作,选择合适的安装路径,接受许可协议。 - 安装过程中可能会提示配置数据库连接信息,根据实际情况输入。 - ...

    计算机应用基础目录内容.docx

    - 跳转列表功能:快速访问常用文件或应用程序。 - 桌面小工具:如时钟、天气预报等增强桌面功能性。 - **任务2:窗口及任务栏操作** - **知识点**: - 窗口基本操作:最大化、最小化、关闭等。 - 任务栏定制:...

    VB090120-快速全盘查找文件程序.rar

    7. **安全性与隐私**:尽管这种程序可以帮助用户快速查找文件,但使用时也需注意安全问题。确保只在信任的来源下载此类程序,并且了解它如何访问和处理个人信息。 8. **版本控制和更新**:"VB090120"可能是版本号或...

    注册表快速查找表格-手工取证必备手册

    《注册表快速查找表格-手工取证必备手册》这份资料,其内容聚焦于Windows系统及其相关应用程序在注册表中的常见位置,这些位置存储了具有取证价值的数据。手册中列举了如AOL即时通讯软件、ICQ、Internet Explorer...

    微信小程序开发附赠算法视频

    这部分内容可能涵盖了数据结构(如数组、链表、栈、队列、树、图等)、排序和查找算法(如冒泡排序、快速排序、二分查找、哈希表等)、动态规划、贪心算法、回溯法等经典问题。通过这些算法的学习,你可以更好地解决...

    零基础学VC++6.0(PPT),Visual C++作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。Microsoft的基本类库MFC使得开发Windows应用程序变得非常容易。本书的目的就是让读者学会在Visual C++环境下,利用微软的基本类库MFC开发出功能强大的Windows应用程序。

    Visual C++是Microsoft公司推出的一款集成开发环境,以其强大的功能和直观的可视化界面,成为了程序员们开发Windows应用程序的首选工具。这本书特别强调了使用MFC(Microsoft Foundation Classes)库来简化Windows...

    嵌入式linux应用程序开发-课程大纲

    ### 嵌入式Linux应用程序开发课程大纲解析 #### 第一部分:嵌入式开发基础强化训练 本部分作为课程的入门阶段,旨在帮助学生建立起扎实的Linux基础与嵌入式开发技能,为后续深入学习奠定基石。 **1. Linux操作...

    Executor快速打开应用

    Executor是一款高效且便捷的应用启动工具,它允许用户通过简单的配置,快速地打开电脑中的任何应用程序,从而极大地提升了桌面管理的效率。在日常工作中,我们常常会安装很多软件,导致桌面图标繁多,查找起来十分...

    一款强悍的电工类计算工具和资料聚合应用 for Android .rar

    标题中的“一款强悍的电工类计算工具和资料聚合应用 for Android”表明这是一款专为Android设备设计的应用程序,主要用于电工领域的计算和信息检索。这款应用集合了多种电工计算功能,并整合了丰富的电工资料,旨在...

Global site tag (gtag.js) - Google Analytics