U盘发现器
package com.lx.io;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
public class USBreadFile {
/**
* 更多资料欢迎浏览凯哥学堂官网:http://kaige123.com
* @author 小沫
*/
public static void USB() {
File[] files = File.listRoots();//列出当前所有盘符
//准备好集合,把所有盘符数据添加进去
ArrayList<File> f1 = new ArrayList<>();
ArrayList<File> f2 = new ArrayList<>();
long sum;// 盘符总大小
long surplus;// 盘符剩余大小
long use;// 盘符已使用大小
while (true) {
File[] newfiles = File.listRoots();//获得到新盘符
if (newfiles.length > files.length) {//如果新的盘符大于原来盘符
//用Arrays工具把数组转换成集合在添加进集合
f1.addAll(Arrays.asList(files));
f2.addAll(Arrays.asList(newfiles));
f2.removeAll(f1);//在f2和f1里面找到相同的数据进行删除掉
for (File file : f2) {
try {
char[] c = file.getPath().toCharArray();//把路径拆分成字符
System.out.print("插入:" + c[0] + " 盘");
sum = file.getTotalSpace() / 1024 / 1024 / 1024;
surplus = file.getUsableSpace() / 1024 / 1024 / 1024;
use = sum - surplus;
//列出每个盘符的信息
System.out.println(c[0] + "盘总大小:" + sum + "G" +
" 剩余:" + surplus + "G" + " 已用:" + use + "G");
//用Runtime方法打开插入进去的U盘
Runtime.getRuntime().exec("cmd /c start " + file.getPath());
} catch (IOException e) {
e.printStackTrace();
}
}
files = newfiles;//更新盘符
} else if (newfiles.length < files.length) {//如果新的盘符小于了原来的盘符
//说明U盘已经拔出
System.out.println("U盘已拔出");
files = newfiles;
}
}
}
public static void main(String[] args) {
USB();
}
}
相关推荐
U盘发掘者 <br/> 也许有些时候你在电脑上找不到自己的U盘. 或许被隐藏了,或许是禁用了。只要你的U盘指示灯亮着 就可以用此小程序打开它. 此为共享软件。感谢使用! <br/> <br/> <br/...
在本例中,计算机向U盘发送了Set_Address、Get_Device_Descriptor、Get_Configuration_Descriptor等命令,以获取U盘的基本信息。 类请求阶段是指计算机向U盘发送的类请求命令,以获取U盘的详细信息。在本例中,...
【盘发艺术:塑造时尚与优雅的50种方式】 盘发,作为女性发型的一种经典样式,不仅可以展现出优雅气质,还能增添时尚感。无论是日常生活、职场还是特殊场合,一款精致的盘发都能让人焕然一新,提升整体形象。本文将...
- **BulkOut0函数示例**:该函数用于向U盘发送数据,通过设置USB设备地址、端点类型、传输方向、载荷大小和数据长度,结合预设的数据缓冲区,完成数据的批量输出。 #### 实现意义与应用场景 通过基于单片机的...
2. 发送命令:根据USB Mass Storage Class协议,向U盘发送相应的命令,如 Bulk-Only Transport (BOT) 协议中的读写请求。这可能涉及到SCSI命令,如READ(10)和WRITE(10)。 3. 数据传输:在命令成功后,通过串口发送...
8. **系统响应**:当主机(如电脑)通过USB接口向虚拟U盘发送读写请求时,STM32需要快速准确地响应,执行相应的Flash读写操作,并通过USB返回结果。 9. **安全性和稳定性**:在实际应用中,还需要考虑数据的完整性...
5. **数据传输**:单片机通过USB接口向U盘发送读/写命令,SL811芯片将这些命令封装成USB协议的数据包,通过USB总线传输。在接收数据时,SL811会将接收到的数据解封装,传递给单片机。 6. **中断处理**:在读写过程...
读取U盘数据时,PIC单片机会向CH376发送读取命令,CH376则会根据命令向U盘发送适当的USB请求,并将接收到的数据返回给单片机。写入操作类似,只是数据流向相反,单片机会将待写入的数据传递给CH376,然后由CH376完成...
这个过程包括了向U盘发送设备请求,获取设备描述符,识别设备类型,以及配置端点。对于读取U盘,我们需要找到数据传输的 Bulk-Endpoint,因为U盘通常使用Bulk传输来处理大量数据。 读取U盘数据时,主机通过发送IN...
在枚举过程中,CH375会解析U盘发送的设备描述符,从而确定U盘的容量、速度等信息。 一旦U盘被成功识别,51单片机就可以通过CH375向U盘发送读写命令。读操作涉及寻址指定扇区,请求数据;写操作则需要先将数据暂存,...
对于文件读写,DSP5402会通过USB接口向U盘发送命令,读取或写入特定簇的数据。读文件时,根据文件的起始簇号和文件长度,依次读取FAT表中对应的簇,并将数据送至处理器内部的缓冲区。写文件则相反,先将数据存入缓冲...
3. **数据传输**:在配置完成后,STM32F207可以向U盘发送读写请求。读操作通常涉及控制传输,而写操作可能使用批量传输。这里的关键是正确设置USB事务的类型、方向和数据包。 4. **中断处理**:在数据传输过程中,...
5. **读写操作**:通过CH375驱动,向U盘发送读写命令,完成数据的存取。这包括打开文件、读取数据、写入数据、关闭文件等操作。 6. **错误处理**:在编程过程中,需要考虑到可能遇到的各种错误情况,如USB连接问题...
在IT领域,尤其是在嵌入式系统和设备驱动程序开发中,USB(通用串行总线)编程是一项重要的技能。"VC USB编程(发送和接收数据)"这个主题涉及到使用Microsoft Visual C++ (VC++)进行USB设备的通信。...
晚装盘发技术手法PPT学习教案.pptx
4. **读取文件**:知道文件路径后,通过CH375向U盘发送读取文件的命令。这通常涉及文件的偏移地址和要读取的数据长度。 5. **处理数据**:CH375将从U盘读取的数据通过SPI或I²C传回51单片机,你需要在单片机端接收...
在这个例子中,它是整个工具的核心,包含了所有的代码和资源,用于实现U盘发型更换的功能。 综上所述,这个工具的运作原理可能包含以下几点: 1. **图像处理**:软件内嵌图像处理算法,能够读取用户的照片,并对...
4. 数据传输:一旦设备被选中并配置好,就可以通过CH375向U盘发送读写请求。读操作时,单片机会发送读命令,CH375接收到命令后,从U盘读取数据并通过串行接口返回给单片机;写操作则相反,单片机将数据发送给CH375,...
SCSI(Small Computer System Interface,小型计算机系统接口)是一种广泛应用于各种存储设备的数据传输协议,如硬盘、光驱、磁带机等。它提供了一种高效、可靠且灵活的I/O(输入/输出)机制,使得主机能够与外部...
点、线、面、分区、卷杠、剪发、盘发动态图详解.ppt