【问题标题】:WindowsExplorer Drop Get Files and Files From FoldersWindows Explorer Drop 从文件夹中获取文件和文件
【发布时间】:2012-04-23 19:21:53
【问题描述】:

据我所知,无法判断放置的是文件还是文件夹。

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);
            }
        }

【问题讨论】:

    标签: wpf drag-and-drop .net


    【解决方案1】:

    我会在添加 try catch 之前使用 Directory.ExistsFile.Exists - 尽管由于文件/目录的安全性,您可能仍然需要 try(这两种 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);
        }
    }
    

    【讨论】:

    • 那行得通。 +1 如果一天结束时没有任何问题,我将标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    相关资源
    最近更新 更多