C# 如何随机读取一个文件夹下的多个文件内容?

如何随机读取一个文件夹下的多个文本文件内容?
用C/C++或C#都可以。

获取那个文件夹下的所有文件,用洗牌算法洗一遍,根据数量生成一个随机数n,读取前n个文件的内容

using System;
using System.IO;
using System.Linq;

class Program {
    static Random rand = new Random();
    static T[] FisherYatesShuffle<T>(T[] arr, int n) {
        for (int i = 0; i < n; i++) {
            int j = rand.Next(i, n);
            (arr[i], arr[j]) = (arr[j], arr[i]);
        }
        return arr.AsSpan().Slice(0, n).ToArray();
    }
    static void Main() {
        string dirname = ".";

        var filenames = Directory.GetFiles(dirname, "*.txt");
        int n = rand.Next(filenames.Length);

        var result = FisherYatesShuffle(filenames, n)
        .SelectMany(f => File.ReadAllLines(f))
        .Select(line => line.Split(':')[1].Split(','))
        .Aggregate((crrnt, rslt) => crrnt.Intersect(rslt).ToArray());

        File.WriteAllText("result.txt", string.Join(" ", result));
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-17
随机算法()返回0或者1,0不读取,1读取
random(0,1)
循环文件夹文件for/foreach
调用随机算法如果是1就读取,0就继续循环

C# 如何随机读取一个文件夹下的多个文件内容?
获取那个文件夹下的所有文件,用洗牌算法洗一遍,根据数量生成一个随机数n,读取前n个文件的内容 using System;using System.IO;using System.Linq;class Program { static Random rand = new Random(); static T[] FisherYatesShuffle<T>(T[] arr, int n) { for (int i = 0; i ...

C# 如何读取一个文件夹下的多个文件内容
FileInfo[] ff = di.GetFiles("*.txt");\/\/只取文本文档 string ss = "";\/\/存放内容 foreach (FileInfo temp in ff){ using (StreamReader sr = temp.OpenText()){ ss += sr.ReadToEnd();\/\/内容追加到ss中 } } File.AppendAllText("要保存的文件路径", ss);\/\/保存到一个文件里 ...

C#如何遍历一个文件夹下面所有的文件
方法 void GetAllFiles(string dir,List<string> allFiles){ DirectoryInfo di = new DirectoryInfo(dir);if (!di.Exists) return;\/\/如果目录不存在,退出 var currentDirFiles = di.GetFiles().Select(p => p.Name);\/\/获取当前目录所有文件 allFiles.AddRange(currentDirFiles);\/\/将当前目录文件...

如何用c#读取一个文件夹中的多个txt文件并且分别存到dictionary中。_百度...
先通过目录搜索到指定文件夹中的txt文件,然后读出来之后存到指定的Dictionary中。

c#如何批量获取一个文件夹下的文件属性,然后存入数据库
1,创建数据表 第二步。在对应的文件夹下复制好文件。假设当前目录为image,该目录下有下列文件。第三步,信息入库,本人这里以C#为例。public static InsertFilesInfo(string path) \/\/创建方法。这里采用参数传递,方便对不同目录下的文件进行遍历入库 { string filename=""; \/\/\/定义变量,用于...

C# 如何在指定文件夹中选定 命名格式类似的多个文件
这个方法里面有带searchPattern参数的重载 它可以实现根据文件名过滤文件,在MSDN上有此API的详细说明 或者你也可以直接使用public static string[] GetFiles (string path);方法,然后在内存里面用Linq过滤出你想要的数据 var result = Directory.GetFiles(@"c:\\").Select(c => new DirectoryInfo(c)) ...

c#实现如何遍历一个文件夹下的所有文件,并用md5函数算出所有文件的md5...
如果你想获得包括子文件夹下的所有文件 也有对应的重载 计算md5需要使用System.Security.Cryptography.MD5类 用法如下:MD5 md5 = MD5.Create();FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);byte[] hash = md5.ComputeHash(fs);fs.Close();两段代码连...

C# Winform里面怎么把一个文件夹下面的文件名称读取出来到ComBox的下拉...
{ string[] strArrFiles = Directory.GetFiles(strUserDirPath);DataTable dt = new DataTable();DataColumn dc = new DataColumn("user", typeof(string));dt.Columns.Add(dc);foreach (string s in strArrFiles){ DataRow dr = dt.NewRow();dr[0] = Path.GetFileName(s);dt.Rows....

c#求读取指定文件夹下面所有文件最快的算法
目前来说 没有这么快的算法来实现(可能是我们接触的不够多。我也遇到这样的问题,没办法解决)折中的办法就是把这些文件名称和路径都存入数据库,查找的时候从数据库里面查找,然后根据返回记录定位到文件夹。

c#实现遍历文件夹里的所有文件内容,然后删除某个内容?
C是一个通用的计算机编程语言创建的丹尼斯·里奇在1972年贝尔实验室。它是一种程序性和低级语言,提供对系统内存的访问。C是一个成千上万的计算机编程语言用来创建列表的指令。今天仍然非常广泛使用和影响力。有许多资源网上学习C语言,比如learn-c.org提供了一个免费互动教程。

相似回答