2009-07-14 26 views

답변

30

당신은이 방법에 대한 System.IO를 참조해야합니다.

var driveList = DriveInfo.GetDrives(); 

foreach (DriveInfo drive in driveList) 
{ 
    if (drive .DriveType == DriveType.Removable) 
    { 
    //Add to RemovableDrive list or whatever activity you want 
    }  
} 

또는 LINQ 팬들을위한

:

var driveList = DriveInfo.GetDrives().Where(d => d.DriveType == DriveType.Removable); 



추가는 저장 부분에 관해서는
, 지금까지의 내가 아는 한 나는 당신이 어디에 제한 할 수 있다고 생각하지 않습니다 사용자는 SaveFileDialog를 사용하여 저장할 수 있지만 SaveFileDialog를 표시 한 후 검사를 완료 할 수 있습니다.

if(saveFileDialog.ShowDialog() == DialogResult.OK) 
{ 
    if (CheckFilePathIsOfRemovableDisk(saveFileDialog.FileName) == true) 
    { 
    //carry on with save 
    } 
    else 
    { 
    MessageBox.Show("Must save to Removable Disk, location was not valid"); 
    } 
} 

또는

최선의 선택은 트리보기 만에 사용자 저장하기위한 이동식 드라이브와 그 내용을 보여주는이 들어 자신의 저장 대화 상자를 생성하는 것입니다! 이 옵션을 권하고 싶습니다.

희망이 있습니다

+0

Hi ThePower, 사용 가능한 이동식 드라이브를 대화 상자로 표시하여 파일을 저장하려고합니다. 도와주세요. – Anuya

+1

@karthik 나는 당신이 자신 만의 맞춤 저장 대화 상자를 만들어야한다고 생각한다.이 대화 상자는 드라이브 목록에서 가져온 디렉토리 만 보여줄 것이다.saveFileDialog.InitialDirectory를 이동식 드라이브 중 하나로 설정해 볼 수도 있지만 사용자는 여전히 하드 드라이브 등으로 돌아갈 수 있습니다. 직접 대화 상자를 만들려면이 옵션이 가장 좋습니다 TreeView를 사용하여 RemovableDrives와 그 내용을 표시하지만이 방법은이 솔루션을 얻는 것보다 시간이 많이 걸릴 것입니다. – ThePower

+0

linq 쿼리에 오류가 있습니다. "제거 가능"대신 "이동식"이어야합니다. – Lonefish

4
+0

H의 Rhys, 나는 iLists 새로운 오전. 링크에서 코드를 실행하여 사용자에게 이동식 드라이브가있는 대화 상자를 표시하려면 inorder 명령을 내 보냈습니까? 도와주세요. 긴급한. – Anuya

+0

해당 링크의 샘플 코드는 단순히 이동식 드라이브 목록을 반환합니다. 대화 상자에서이를 사용하려면 @ThePower가 제안한대로 사용자 정의 대화 상자를 만들어야합니다. –

+0

이 게시물의 링크가 죽었습니다. 답으로 무엇을해야합니까? 모든 답은 오늘날 (25-10-17) 더 이상 존재하지 않는 자원에 대한 링크입니다. – Jura25

9

에 대해 어떻게 :

var removableDrives = from d in System.IO.DriveInfo.GetDrives() 
         where d.DriveType == DriveType.Removable; 
+2

또는 동의어 : var removableDrives = DriveInfo.GetDrives(). 여기서 (d => d.DriveType == DriveType.Removable); –

3

또한 WMI를 사용하여 이동식 드라이브 목록을 가져올 수 있습니다. 의견에 따라

ManagementObjectCollection drives = new ManagementObjectSearcher (
    "SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType='USB'" 
).Get(); 

편집 :

당신이 드라이브의 목록을 얻을 후이 GUID의 취득 및 SaveFileDialogInstance.CustomPlaces 컬렉션에 추가합니다. 아래의 코드는 일부 조정이 필요

...

System.Windows.Forms.SaveFileDialog dls = new System.Windows.Forms.SaveFileDialog(); 
dls.CustomPlaces.Clear(); 
dls.CustomPlaces.Add(AddGuidOfTheExternalDriveOneByOne); 
.... 
.... 
dls.ShowDialog(); 
+0

USB가 아닌 SD라면 어떻게해야합니까? 아니면 이것에 만족할 것인가? – ThePower