热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

u盘检测java软件_Java之——U盘检测程序文件递归

转载请注明出处:http:blog.csdn.netl1028386804articledetails53439922今天,给大家带来一篇由Java实现

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/53439922

今天,给大家带来一篇由Java实现U盘监测和文件递归的文章,其中代码主要通过File类中的listroots对文件系统进行遍历,比较出盘符的变化,进而通过递归遍历出U盘中的内容。好了,不多说了,我们直接上代码

package com.lyz.disk.test;

import java.io.File;

import java.util.Vector;

/**

* 搜索文件系统的盘符

* @author liuyazhuang

*

*/

public class DiskSearchThread implements Runnable {

/** root 现有文件系统的盘符 */

private File[] roots = File.listRoots();

/** fileVector 为了遍历U盘内文件 */

private VectorfileVector = new Vector();

volatile boolean sign = false;

SearchFileThread t = null;

public DiskSearchThread() {

}

@Override

public void run() {

System.out.println("Checking System...");

while (true) {

File[] tempFiles = File.listRoots();

fileVector.removeAllElements();

/** 检测到了有U盘插入 */

if (tempFiles.length > roots.length) {

for (int i = tempFiles.length - 1; i >= 0; i--) {

sign = false;

for (int j = roots.length - 1; j >= 0; j--) {

/** 如果前后比较的盘符相同 */

if (tempFiles[i].equals(roots[j])) {

sign = true;

}

}

/** 如果前后比较的盘符不相同,将不相同的盘符写入向量,并做进一步处理 */

if (!sign) {

fileVector.add(tempFiles[i]);

}

}

roots = File.listRoots();

t = new SearchFileThread(fileVector);

t.start();

} else {

for (int i = roots.length - 1; i >= 0; i--) {

sign = false;

for (int j = tempFiles.length - 1; j >= 0; j--) {

if (tempFiles[j].equals(roots[i])) {

sign = true;

}

}

/** 如果前后比较的盘符不相同,表明U盘被拔出 */

if (!sign) {

System.out.println("QUIT:" + roots[i].toString());

fileVector.removeAllElements();

t.setIsExistToFalse();

// roots=File.listRoots();

}

}

roots = File.listRoots();

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public static void main(String[] args) {

new Thread(new DiskSearchThread()).start();

}

}

package com.lyz.disk.test;

import java.io.File;

import java.util.Vector;

/**

* 搜索文件的线程

* @author liuyazhuang

*

*/

public class SearchFileThread extends Thread {

private VectorfileVector = null;

private int scanNum = 1;

/** 线程安全的变量,用于退出线程 */

volatile boolean isExist = true;

public SearchFileThread(VectorfileVector) {

this.fileVector = fileVector;

System.out.println("fileVector size:" + fileVector.size());

}

@Override

public void run() {

File file = fileVector.elementAt(scanNum - 1);

long totalMemory = file.getFreeSpace();

while (isExist) {

while (scanNum <&#61; fileVector.size()) {

try {

System.out.println("search:"

&#43; fileVector.elementAt(scanNum - 1).toString()

&#43; " Total Space:"

&#43; fileVector.elementAt(scanNum - 1).getTotalSpace()

/ 1024 / 1024 &#43; "MB Free Space:"

&#43; fileVector.elementAt(scanNum - 1).getFreeSpace()

/ 1024 / 1024 &#43; "MB");

/** 遍历文件内容 */

getFiles(fileVector.elementAt(scanNum - 1).getPath());

scanNum&#43;&#43;;

} catch (Exception e) {

e.printStackTrace();

scanNum&#43;&#43;;

}

}

/** 如果盘符的大小发生变化&#xff0c;则有文件进出 */

if (totalMemory !&#61; file.getFreeSpace()) {

System.out.println("文件发生变化----------------------");

getFiles(file.getPath());

totalMemory &#61; file.getFreeSpace();

}

}

}

/**

* 递归遍历文件

* &#64;param path

*/

public void getFiles(String path) {

try {

File file &#61; new File(path);

if (file.isDirectory()) {

File[] list &#61; file.listFiles();

for (int i &#61; 0; i

if (list[i].isDirectory()) {

/** 递归调用 */

getFiles(list[i].getPath());

}

System.out.println("Find File:" &#43; list[i].getName());

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

public synchronized void setIsExistToFalse() {

if (isExist)

isExist &#61; false;

}

}



推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
author-avatar
mobiledu2502932307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有