在 Java 中获取驱动器名称(而不是驱动器号)

2022-09-04 08:25:23

在我的Windows机器上,我的主硬盘驱动器具有字母C:和名称“本地磁盘”。

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

以前有人试过这个吗?


答案 1

啊,是的,你需要获取 FileSystemView 对象并使用 getSystemDisplayName。(我曾经用Java实现过一个文件系统浏览器)。

虽然它并不完美,但它会让你得到这个名字。从文档中:

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


答案 2

实际上,要获取驱动器名称(例如本地磁盘),您需要使用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
      */
    }
}

推荐