2012-04-23 6 views
0

私は、ドロップがファイルであるかフォルダであるかを伝える方法がないことからわかります。WindowsExplorer Dropフォルダからファイルとファイルを取得

(fi.Extension == "")がディレクトリと一致していても、拡張子のないファイルでも十分でない場合。

私が見つけた唯一の方法は、.GetFiles()に例外を処理することでした。

良い方法がありますか?

private void ListView0_DragDrop(object sender, DragEventArgs e) 
    { 
     // Can only drop files, so check 
     if (!e.Data.GetDataPresent(DataFormats.FileDrop)) 
     { 
      return; 
     } 

     string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); 
     FileInfo fileInfo; 

     DirectoryInfo dirInfo; 
     foreach (string str in files) 
     { 
      dirInfo = new DirectoryInfo(str); 
      try 
      { 
       foreach(FileInfo fi in dirInfo.GetFiles()) 
       { 
        Debug.WriteLine("File in dir " + fi.Name); 
       } 
      } 
      catch 
      { 
       fileInfo = new FileInfo(str); 
       Debug.WriteLine("File " + str); 
      } 
     } 

答えて

1

私は、tryキャッチを追加する前にDirectory.ExistsFile.Existsを使用する - あなたはFileIOExceptionを投げることができるため、ファイル/ディレクトリ(これらのExistsメソッドの両方のセキュリティにとにかく試す必要があるかもしれませんが、

DirectoryInfo dirInfo; 
foreach (string str in files) 
{ 
    if (Directory.Exists(str)) 
    { 
     dirInfo = new DirectoryInfo(str); 

     foreach(FileInfo fi in dirInfo.GetFiles()) 
     { 
      Debug.WriteLine("File in dir " + fi.Name); 
     } 
    } 
    else if (File.Exists(str)) 
    { 
     fileInfo = new FileInfo(str); 
     Debug.WriteLine("File " + str); 
    } 
} 
+0

。それが動作します+1私は答えとしてマークします。 – Paparazzi

関連する問題