2012-04-23 106 views
0

从我可以告诉有没有方法来告诉如果下降是一个文件或文件夹。WindowsExplorer删除从文件夹获取文件和文件

if(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

我会用Directory.ExistsFile.Exists增加一个尝试捕捉之前 - 尽管你可能需要反正尽量由于对文件/目录(这两种Exists方法的安全性可以抛出FileIOException

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 2012-04-23 20:21:51