Windows资源管理器从文件夹中删除文件和文件

时间:2012-04-23 19:21:54

标签: wpf drag-and-drop .net

据我所知,无法判断丢弃是文件还是文件夹。

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 个答案:

答案 0 :(得分:1)

在添加try catch之前我会使用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);
    }
}