2013-10-20 67 views
0

我試圖創建一個軟件,可以保存USB設備的信息,如:名稱,總空間,可用空間,格式類型等。使用DriveInfo []但我不能解決如何分別保存每個獨立的USB設備的INDIVIDUAL部分,所以我知道哪個USB設備適用於什麼信息。我正在嘗試保存每個USB設備,並將其信息保存到文本文件中。以下是我的:使用DriveInfo獲取USB信息,並以某種方式輸出信息

DriveInfo[] loadedDrives = DriveInfo.GetDrives(); 

      foreach (DriveInfo ld in loadedDrives) 
      { 
       if (ld.DriveType == DriveType.Removable) 
       { 
        if (ld.IsReady == true) 
        {    
          deviceInfo.Add(ld.VolumeLabel + ": , " + ld.TotalSize + ": , " + ld.AvailableFreeSpace + ": , " + ld.DriveFormat);    
        } 
       } 
      } 

      foreach (String st in deviceInfo) 
      { 

       string[] deviceSel; 
       // DriveInfo dInfo; 
       deviceSel = st.Split(splitChar); 


       if (itemSelected.Contains(deviceSel[0])) 
       { 

        //Check That USB drive is the one thats selected 
        MessageBox.Show(deviceSel[0]); 
        break; 
       } 

      } 

有沒有比我所做的更簡單的方法?因爲我試着解決問題越多,代碼就越複雜。乾杯

+0

你說的文本文件部分在哪裏? – weston

+0

您可能想要爲您的USB信息創建一個對象類型,並將它們的列表序列化爲xml,如果您沒有設置文本文件。 – weston

+0

我到目前爲止,設備的名稱被解析爲另一個類,它使用StreamWriter寫入文本文件。我的問題是,我只能設法將設備的名稱變爲變量,而不是每個信息 –

回答

0

好吧,你不需要投入字符串數組,讓他們爲DriveInfo

DriveInfo[] loadedDrives = DriveInfo.GetDrives(); 
List<DriveInfo> deviceInfo = new List<DriveInfo>(); 

foreach (DriveInfo ld in loadedDrives) 
{ 
    if (ld.DriveType == DriveType.Removable) 
    { 
     if (ld.IsReady == true) 
     {    
       deviceInfo.Add(ld);    
     } 
    } 
} 

foreach (DriveInfo st in deviceInfo) 
{ 
    //can write whatever you want now 
} 

但是,第一循環可以做很多更容易使用LINQ:

DriveInfo[] loadedDrives = DriveInfo.GetDrives(); 
var deviceInfo = DriveInfo.GetDrives() 
        .Where(d=>d.DriveType == DriveType.Removable && d.IsReady);