java怎么写一个程序读取计算机的所有磁盘

java怎么写一个程序读取计算机的所有磁盘,第1张

File[] roots = File.listRoots()

for (int i =0i <roots.lengthi++) {

System.out.println(roots[i])

}

放入游正main里执行就知道配闹,获取所有盘符。

查找文件时需要读取该盘符培磨罩的所有文件夹、文件。同时如果是文件夹递归读取里面的文件夹、文件,就是这个思路。

在写程序时我们想对每一台计算机都生成一个唯一的标识,而且在一此共享软件中我们也看到,软件在不同的机器上生成了不同的标识,这是如何实现的呢,其实是软件有一部分程序读取了,本地计算机的一部分硬件参数(如硬盘序列号,网卡序列号等等),再通过一系列算法而得到了一个唯一标识,其实我们也可以通过一个api函数生成我们的唯一标识,由于硬盘人人都有,而网卡不一定每个人都有,所以以读硬盘序列号为例,

下面就先介绍一下我们要用到的api函数

BOOL GetVolumeInformation(

LPCTSTR lpRootPathName, // 硬盘的路径

LPTSTR lpVolumeNameBuffer,// 硬早漏盘的卷标

DWORD nVolumeNameSize,// 卷标的字符串长度

LPDWORD lpVolumeSerialNumber, // 硬盘的序列号

LPDWORD lpMaximumComponentLength, // 最大的文件长度

LPDWORD lpFileSystemFlags,// 文件系统的一此标志

LPTSTR lpFileSystemNameBuffer,// 存储所在盘符的分区类型的长指针变量

DWORD nFileSystemNameSize // 分区类型的长指针变量所指向的字符串长度

)

如果上述函数成功就返回一个非0值。

光说不做,是不行了,我们还得实践一下:// 最大的文件长度

首选用MFC AppWizard建立一个基于Dialog base的对话框工程,名为GetHardID,点击finish。

加一个按钮,双击它,点击ok,并陆世烂在对应的函数中加入如下代码:

LPCTSTR lpRootPathName="c:\\"//取C盘

LPTSTR lpVolumeNameBuffer=new char[12]//磁盘卷标

DWORD nVolumeNameSize=12// 卷标的字符串长度

DWORD VolumeSerialNumber//硬盘序列号

DWORD MaximumComponentLength// 最大的文件长度

LPTSTR lpFileSystemNameBuffer=new char[10]// 存储所在盘符的分区返旦类型的长指针变量

DWORD nFileSystemNameSize=10// 分区类型的长指针变量所指向的字符串长度

DWORD FileSystemFlags// 文件系统的一此标志

::GetVolumeInformation(lpRootPathName,

lpVolumeNameBuffer, nVolumeNameSize,

&VolumeSerialNumber, &MaximumComponentLength,

&FileSystemFlags,

lpFileSystemNameBuffer, nFileSystemNameSize)

CString str

str.Format("Seria Num is %lx ",VolumeSerialNumber)

AfxMessageBox(str)

编译,链接并运行程序,单击按钮,在d出的对话框中就是我们要的序列号。

对不对我们验证一下,进入dos窗口,打入"dir c:/p"命令,怎么样是不是和我们的程序显示的一模一样

这样我们就在功告成了。

这个不是硬盘访问的问题,你把图片放到Web工程外,那么你不发扒桐此布而直接访问时(就是直接将网页拖到浏览器中),那么此时用的是file://X:xxx/xx/test.html的形式,而直接通过浏览器使用http协议访问的话,那么基于安全因素,http协议是中是不允许使用file这春迅种方式访问服务器内容的(你想想,如果可以,那随便哪个人用个简单的网页就直接读取服务器上的敏感文件了),你必须将图片转化成流的形式输出到页面中,或者将图片放在工轮枝程目录里。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12535816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存