2009-01-20 94 views
10

在我的Windows机器上,我的主硬盘驱动器具有字母C:和名称“本地磁盘”。在Java中获取驱动器名称(而不是驱动器号)

要列出的Windows Java中的驱动器号,文件对象具有静态listRoots()方法。但是我找不到在Windows上获取驱动器名称(而不是驱动器号)的方法。

有没有人试过这个?

回答

10

是啊,你需要得到的FileSystemView对象,并使用getSystemDisplayName。 (我曾经用Java实现过一个Filesystem浏览器)。

虽然它不是完美的,但它会让你的名字。从文档:

文件,目录或文件夹的名称,因为它将显示在系统文件浏览器中。来自Windows的示例:“M:\”目录显示为“CD-ROM(M :)”默认实现从ShellFolder类获取信息。

+0

如何获取磁盘名称。我不是在讨论卷标)但是磁盘名称,如HP CD Drive,Samsung SSD,StoreJet等 – 2016-04-25 11:35:03

10

实际上,要获取驱动器名称(例如本地磁盘),您需要使用getSystemTypeDescription。 getSystemDisplayName返回卷名称。

import java.io.File; 
import java.util.Arrays; 
import java.util.List; 
import javax.swing.filechooser.FileSystemView; 

public class Test2 { 
    public static void main(String args[]){ 

     List <File>files = Arrays.asList(File.listRoots()); 
     for (File f : files) { 
     String s1 = FileSystemView.getFileSystemView().getSystemDisplayName (f); 
     String s2 = FileSystemView.getFileSystemView().getSystemTypeDescription(f); 
     System.out.println("getSystemDisplayName : " + s1); 
     System.out.println("getSystemTypeDescription : " + s2); 
     } 
     /* output (French WinXP) 

      getSystemDisplayName : 
      getSystemTypeDescription : Disquette 3½ pouces 

      getSystemDisplayName : REGA1 (C:) 
      getSystemTypeDescription : Disque local 

      getSystemDisplayName : 
      getSystemTypeDescription : Lecteur CD 

      getSystemDisplayName : My Book (F:) 
      getSystemTypeDescription : Disque local 
     */ 
    } 
} 
+0

什么是USB密钥的系统类型描述?它不同于Windows XP到Windows 7? – Maxbester 2013-05-24 11:35:54

0

(经由JACOBcom4j)使用WMI是另一种选择。

FileSystemView.getSystemDisplayName不给你原始的卷标。它是驱动器盘符和卷标的组合,默认情况下标签未被设置。

WMI会给你生卷标,加上其他一些信息,例如是驱动器是否是可移动的(令人惊讶的FileSystemView.isFloppyDrive()不会告诉你这个,“它是一个软盘”它的字面意思)

相关问题