C#以排列组合中的“组合”方式遍历某个文件夹下的所有文件

原创 2015年07月08日 10:22:42

参考自:http://blog.csdn.net/zmazon/article/details/8315418#comments

 private void button1_Click(object sender, EventArgs e)
        {
            //temp文件夹下存放着我们的环境因子
            DirectoryInfo folder = new DirectoryInfo(@"E:\work\test\data\temp");
            string fileName;
            FileInfo[] file = folder.GetFiles("*.asc");//只读取asc文件
            string[] AttributeFiles = new string[file.Length];
            for (int i = 0; i < file.Length; i++)
            {
                fileName = folder + "\\" + file[i].ToString();
                AttributeFiles[i] = fileName;  
            }

            int r = 3;//组合数,即C(r,n)中的r
            if (null == AttributeFiles || AttributeFiles.Length == 0 || r <= 0 || r > AttributeFiles.Length)
            {
                MessageBox.Show("请检查文件夹的文件是否为空,参数n的设置是否有误。");
            }
            string[] AttributeFilesResult = new string[r];
            getCombination(AttributeFiles, r, 0, AttributeFilesResult, 0);
        }

        private void getCombination(string[] a, int r, int begin, string[] b, int index)
        {
            string AttributeFile = "";
            if (r == 0)
            {
                for (int i = 0; i < index; i++)
                {
                    AttributeFile = AttributeFile + b[i] + " ";

                }
                Console.WriteLine("AttributeFile=" + AttributeFile);

            }
            for (int i = begin; i < a.Length; i++)
            {
                for (int j = 0; j < r; j++)
                {
                    if (j % r != 0)

                    {  
                        b[index] = a[i] + "#";//遍历文件,生成路径+文件名,在每个路径文件名后面加“#”号,末尾元素不加
                    }
                    else
                    {
                        b[index] = a[i];
                    }
                }

                getCombination(a, r-1,i+1,b,index+1);
            }

        }

程序部分输出结果如下(C(3,4),从文件夹中的4个文件中选出r=3的组合):

AttributeFile=E:\work\test\data\temp\horizc.asc# E:\work\test\data\temp\profc.asc# E:\work\test\data\temp\slope.asc 
AttributeFile=E:\work\test\data\temp\horizc.asc# E:\work\test\data\temp\profc.asc# E:\work\test\data\temp\twi.asc 
AttributeFile=E:\work\test\data\temp\horizc.asc# E:\work\test\data\temp\slope.asc# E:\work\test\data\temp\twi.asc 
AttributeFile=E:\work\test\data\temp\profc.asc# E:\work\test\data\temp\slope.asc# E:\work\test\data\temp\twi.asc 
版权声明:本文为博主原创文章,未经博主允许不得转载。

C# 排列组合取值 控制台程序

using System; using System.Collections.Generic; using System.Linq; using System.Text;         ...
  • keenweiwei
  • keenweiwei
  • 2011年10月04日 09:52
  • 2417

c#排列组合算法

Combinatorics.cs代码清单   using System; using System.Collections; using System.Data;        ///       /...
  • ycl111
  • ycl111
  • 2007年10月12日 11:20
  • 6320

C#的排列组合类

// // 算法:排列组合类 // // 版权所有(C) Snowdust // 个人博客 http://blog.csdn.net/snowdust & http://snowdust.cnb...
  • gtosky4u
  • gtosky4u
  • 2015年06月16日 10:10
  • 1166

C#递归求排列组合

如:根据123,可以写出:123,132,213,231,312,321种排列组合顺序。using System;using System.Collections; class Program ...
  • a497785609
  • a497785609
  • 2010年03月23日 18:28
  • 1912

c#排列组合递归算法

从n个字符串中取m个字符的所有组合(无放回抽样)数学原理Cn m=Cn-1m+Cn-1m-1c#代码示例using System;using System.Collections.Generic;us...
  • sisistar
  • sisistar
  • 2007年03月08日 02:10
  • 1755

C#求排列组合数

using System; using System.Collections.Generic; namespace Algorithms { public class Permutation...
  • anpan1045535101
  • anpan1045535101
  • 2013年03月01日 10:51
  • 1754

C#实现排列组合算法

数学中排列组合,排列P(N,R) 其实排列实现了,组合也就实现了组合C(N,R)就是P(N,R)/P(R,R) ,比较简单的是递归算法,但考虑到递归的性能,下面采用了2种非递归的方法,代码如下usin...
  • cutbug
  • cutbug
  • 2009年01月27日 16:39
  • 9790

C#遍历指定文件夹中的所有文件

C#遍历指定文件夹中的所有文件  DirectoryInfo TheFolder=new DirectoryInfo(folderFullName); //遍历文件夹 foreach(Direc...
  • yal179
  • yal179
  • 2014年05月28日 15:41
  • 2647

c# 中循环遍历所有文件夹下的文件

最近,在做文档管理系统,需要遍历文件夹下所有的文件(包括子文件里的文件), 因为新手,所以博主就把方法写在这里,请大家参阅,欢迎批评指正。 前台代码------------------- ...
  • aj_shang
  • aj_shang
  • 2016年10月23日 16:56
  • 1844

C#遍历某目录及其子目录下所有文件的一个例子

问题源于游戏汉化,由于要对汉化文本做某一种批处理,而这些文本集中在某一目录及其各层子目录中,于是如何遍历就成为了一个问题。 直接上代码,不过多解释了,只看checkFiles函数就行,其他和遍历没关...
  • zixiaomuwu
  • zixiaomuwu
  • 2016年04月11日 23:08
  • 622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#以排列组合中的“组合”方式遍历某个文件夹下的所有文件
举报原因:
原因补充:

(最多只允许输入30个字)