微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 使用Directory类,检查某些文件类型的目录

我一直在使用以下行搜索特定文件类型的文件夹结构,只是复制这些文件类型并保持其原始文件夹结构.它工作得很好.
我可以对我的方法进行任何修改,只复制包含过滤文件类型的目录吗?

*编辑:我可以让用户使用名为txtFilter的文本框选择一组特定文件(例如* .dwg或* .pdf).

private void button1_Click(object sender,EventArgs e)
{
    string sourceFolder = txtSource.Text;
    string destinationFolder = txtDestination.Text;
    copyFolderContents(sourceFolder,destinationFolder);
}

// copies the contents of a folder,including subfolders to an other folder,overwriting existing files
public void copyFolderContents(string sourceFolder,string destinationFolder)
        {
            string filter = txtFilter.Text;

            if (Directory.Exists(sourceFolder))
            {
                // copy folder structure
                foreach (string sourceSubFolder in Directory.GetDirectories(sourceFolder,"*",SearchOption.AllDirectories))
                {
                    Directory.CreateDirectory(sourceSubFolder.Replace(sourceFolder,destinationFolder));
                }

                // copy files
                foreach (string sourceFile in Directory.GetFiles(sourceFolder,filter,SearchOption.AllDirectories))
                {
                    string destinationFile = sourceFile.Replace(sourceFolder,destinationFolder);
                    File.copy(sourceFile,destinationFile,true);
                }
            }
        }

解决方法

你的主循环中有这样的东西吗?

if (Directory.EnumerateFiles(sourceSubFolder,"*.pdf").Any())
       Directory.CreateDirectory(sourceSubFolder.Replace(sourceFolder,destinationFolder));

或多种文件类型:

if (Directory.EnumerateFiles(sourceSubFolder).Where(x => x.ToLower.EndsWith(".pdf") || x.ToLower.EndsWith(".dwg")).Any())
       Directory.CreateDirectory(sourceSubFolder.Replace(sourceFolder,destinationFolder));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐