2014-02-25 113 views
0

你好我正在使用if (canRead && canWrite && !isFloppy && isDrive),它只會讀取它找到的第一個驅動器「C:\」,我有一個硬盤和一個SSD,由於某種原因anyehelp不會檢測到某個原因「D:\」的ssd?謝謝。驅動器檢測只檢測一個驅動器?

對不起球員我忘了給包括增值經銷商:

package javaapplication3; 

import java.io.*; 
import javax.swing.filechooser.FileSystemView; 

class filler 
{ 
    public static void main(String ar[]) throws InterruptedException 
    { 
     FileSystemView fsv = FileSystemView.getFileSystemView(); 
     File[] f = File.listRoots(); 
     for (int i = 0; i < f.length; i++) { 
      String drive = f[i].getPath(); 
      String displayName = fsv.getSystemDisplayName(f[i]); 
      String type = fsv.getSystemTypeDescription(f[i]); 
      boolean isDrive = fsv.isDrive(f[i]); 
      boolean isFloppy = fsv.isFloppyDrive(f[i]); 
      boolean canRead = f[i].canRead(); 
      boolean canWrite = f[i].canWrite(); 
      //(type.toLowerCase().contains("removable") || type.toLowerCase().contains("rimovibile")) 
      if (canRead && canWrite && !isFloppy && isDrive) { 
       try { 

         File file = new File(drive +"log_22_2112321321312.log"); 

         if (file.createNewFile()){ 
          System.out.println("File is created!"); 
         } 
         if (file.exists()){ 
          System.out.println("Drive found " + drive); 
          file.delete(); 
         }  
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

      if (canRead && canWrite && !isFloppy && isDrive &&(type.toLowerCase().contains("removable") || type.toLowerCase().contains("rimovibile"))) { 
       try { 

        File file = new File("log_22_2112321321312.log"); 

        if (file.createNewFile()){ 
         System.out.println("File is created!"); 
        } 
        if (file.exists()){ 
         System.out.println("Drive found " + drive); 
         file.delete(); 
        }  
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 
+0

你如何確定'canRead','canWrite','isFloppy'和'isDrive'? – MadProgrammer

+0

這些是他必須創建的變量。可能的來源:http://www.snip2code.com/Snippet/506/Detect-USB-removable-drive-in-Java – collinjsimpson

+0

好找到xD精確來源加上他們在後的 – Fusion

回答

0

是否使用File.listRoots()?檢查以下輸出:

File[] roots = File.listRoots(); 
for (File r : roots) 
    System.out.println(r); 

可能是您的SSD被檢測到但未通過您的條件標準。只有滿足指定的條件時,纔會執行條件內的代碼。在沒有條件的情況下運行代碼,查看驅動器是否實際上未被識別,或者由於邏輯錯誤或其他音量設置而未顯示。

+0

Shoudl已經有全備此'的FileSystemView FSV = FileSystemView.getFileSystemView()提到了這一點; File [] f = File.listRoots(); for(int i = 0; i Fusion

+0

請編輯您的原始文章以包含該代碼,並將其格式化爲代碼。添加'System.out.println(f [i] .getPath())'來查看它是否檢測到你的設備。您的條件聲明可能會省略它。 – collinjsimpson