java如何得到盘符的所有路径

java如何得到盘符的所有路径,第1张

import java.io.File

import java.util.ArrayList

import java.util.Iterator

import java.util.List

public class GetDir {

//用于存储地址的动态数组

private static List addresses = new ArrayList()

//用于存储地址的数组

private static Object[] addresses_str = null

public static void main(String[] args) {

System.out.println("请稍等,数据加载需要一定时间............................")

getDirInTray(new File("C:/"))

//测试动态数组列表内容是否是所有地址

for(Iterator ite = addresses.iterator()ite.hasNext()){

System.out.println(ite.next())

}

System.out.println("============================================================")

//通过字符串数组进行接收所有路径

addresses_str =addresses.toArray()

//打印该数组,确保正确

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

System.out.println(addresses_str[i])

}

}

//得到指定盘符dir下所有路径

/*

* @param dir表示需要指定的盘符

* */

public static void getDirInTray(File dir){

//获取指定盘符下的所有文件列表。(listFiles可以获得指定路径下的所有文件,以数组方式返回)

File[] files = dir.listFiles()

//如果该目录下面为空,则该目录的此方法执行

if(files == null){

return

}

//通过循环将所遍历所有文件

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

//isDirectory方法用于判断当前的文件是不是路径,如果是就返回true

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

//如果是路径,则通过getAbsolutePath得到它的绝对路径,并打印到控制台

//System.out.println(files[i].getAbsolutePath())

//将路径加到List中

addresses.add(files[i].getAbsolutePath())

//通过递归算法调用自身,进行对当前文件的getDirInTray方法的调用

getDirInTray(files[i])

}

}

}

}

/*

* 这里的难点主要在递归算法,如果你懂了,那就很容易理解

* 大量用到了File类的API,可以借助于JDK进行对File类的API进行更深入的了解

* */

/*

我先放在了动态数组ArrayList中,然后将动态数组转换成Object[]数组。

*/

使用sigar,

private static void file() throws Exception {

Sigar sigar = new Sigar()

FileSystem fslist[] = sigar.getFileSystemList()

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

System.out.println("分区的盘符名称" + i)

FileSystem fs = fslist[i]

// 分区的盘符名称

System.out.println("盘符名称:" + fs.getDevName())

// 分区的盘符名称

System.out.println("盘符路径:" + fs.getDirName())

System.out.println("盘符标志:" + fs.getFlags())//

// 文件系统类型,比如 FAT32、NTFS

System.out.println("盘符类型:" + fs.getSysTypeName())

// 文件系统类型名,比如本地硬盘、光驱、网络文件系统等

System.out.println("盘符类型名:" + fs.getTypeName())

// 文件系统类型

System.out.println("盘符文件系统类型:" + fs.getType())

switch (fs.getType()) {

case 0: // TYPE_UNKNOWN :未知

break

case 1: // TYPE_NONE

break

case 2: // TYPE_LOCAL_DISK : 本地硬盘

// 文件系统总大小

FileSystemUsage usage = null

usage = sigar.getFileSystemUsage(fs.getDirName())

System.out.println(fs.getDevName() + "总大小:" + usage.getTotal() + "KB")

// 文件系统剩余大小

System.out.println(fs.getDevName() + "剩余大小:" + usage.getFree() + "KB")

// 文件系统可用大小

System.out.println(fs.getDevName() + "可用大小:" + usage.getAvail() + "KB")

// 文件系统已经使用量

System.out.println(fs.getDevName() + "已经使用量:" + usage.getUsed() + "KB")

double usePercent = usage.getUsePercent() * 100D

// 文件系统资源的利用率

System.out.println(fs.getDevName() + "资源的利用率:" + usePercent + "%")

break

case 3:// TYPE_NETWORK :网络

break

case 4:// TYPE_RAM_DISK :闪存

break

case 5:// TYPE_CDROM :光驱

break

case 6:// TYPE_SWAP :页面交换

break

}

}

return

}

问了一下我远标出来的程序员哥们,她说,你看下对不对

swing下的包,javax.swing.filechooser.FileSystemView可以获取:

FileSystemView fileSys=FileSystemView.getFileSystemView()//获取当前系统文件类型

//获取系统的所有盘符或系统卷类型

for(File f:File.listRoots()){

System.out.println(fileSys.getSystemDisplayName(f))//获取系统卷标及名字

System.out.println(fileSys.getSystemTypeDescription(f))//获取系统卷的类型

System.out.println(f.getTotalSpace())//获取该卷大小(单位:字节)

System.out.println(f.getFreeSpace())//获取该卷可用大小(单位:字节)

}


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

原文地址: http://outofmemory.cn/tougao/8064136.html

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

发表评论

登录后才能评论

评论列表(0条)

保存