2014-01-11 83 views
0

我正在處理的程序需要訪問可移動驅動器。通常這不會成爲問題,因爲掛載點應該保持不變(例如:在Ubuntu上,我的手機的SD卡掛載在/media/sebastian/GT-S5830/)。但是在Windows上,驅動器號有所不同。 (同樣的電話:一旦E:\,在攝像頭的同時被安裝在E:堵塞後,它成爲F:止住了。)從驅動器盤符中獲取分區名稱,反之亦然

所以我想不保存盤符來解決這個問題,但是分區名稱。

例如:設置時,給出路徑E:\DCIM\Camera\。現在,我要做到以下幾點:

  • 獲取安裝在E:分區的名稱
  • 保存路徑,給出的目錄類似<partname>:\DCIM\Camera\
  • 當訪問設備,解決分區的盤符命名爲partname
  • 通過連接驅動器號和冒號後的路徑部分構建路徑。

如何我可以通過給Windows上的掛載點,反之亦然與Java拿到分區名稱?

回答

0

您可能想要探索FileSystemView以獲取關於文件系統的更多信息。更多的例子here

爲了您的事業,你可能希望得到的可移動磁盤上的把手,做一些與信息:

FileSystemView fsv = FileSystemView.getFileSystemView(); 
     File[] files = File.listRoots(); 

     File[] roots = fsv.getRoots(); 
     for (int i = 0; i < roots.length; i++) { 
      System.out.println("Root: " + roots[i]); 
     } 

     for (File fi : files) { 
      if (fsv.getSystemTypeDescription(fi).contains("Local Disk") 
        || fsv.getSystemTypeDescription(fi).contains(
          "Removable Disk")) { 
       System.out.println(fsv.getSystemDisplayName(fi)); 
      } 

     } 

輸出:

Root: C:\Users\popofibo\Desktop 
Local Disk (C:) 
Recovery (D:) 
Removable Disk (E:) 

您可能要檢查Windows如果需要,使用JNA的磁盤卷信息 - 更多詳情here

相關問題