Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中访问随机目录中的随机文件_C#_.net_File - Fatal编程技术网

C# 在C中访问随机目录中的随机文件

C# 在C中访问随机目录中的随机文件,c#,.net,file,C#,.net,File,为了让testsuite测试某些复制场景,我编写了一个FileAccesser。这将访问给定目录中随机子目录中的随机文件,并删除、创建、重命名和更改文件或/和内容。我正在寻找一种方法来访问随机子目录中的随机文件。有什么建议吗 我获取所有子目录中所有文件列表的解决方案是: var _Directory = new DirectoryInfo(args[1]); var _Files = _Directory.GetFiles("*", SearchOption.AllDirectories);

为了让testsuite测试某些复制场景,我编写了一个FileAccesser。这将访问给定目录中随机子目录中的随机文件,并删除、创建、重命名和更改文件或/和内容。我正在寻找一种方法来访问随机子目录中的随机文件。有什么建议吗

我获取所有子目录中所有文件列表的解决方案是:

var _Directory = new DirectoryInfo(args[1]);
var _Files = _Directory.GetFiles("*", SearchOption.AllDirectories);
现在我可以使用

Random _Random = new Random();
var _RandomFile = _Files.ElementAt(_Random.Next(_Files.Count()));

谢谢你的帮助。

你可以做如下事情:

创建所有目录的列表作为字符串列表 为每个目录创建一个文件列表。 使用随机生成器生成一个介于0和目录计数列表之间的数字。 根据上述生成的编号从列表中选择目录作为索引。 应用最后两个步骤为上述选定目录选择随机文件。
你可以这样做:

创建所有目录的列表作为字符串列表 为每个目录创建一个文件列表。 使用随机生成器生成一个介于0和目录计数列表之间的数字。 根据上述生成的编号从列表中选择目录作为索引。 应用最后两个步骤为上述选定目录选择随机文件。
我想我理解你想做什么,但是在这里使用随机性进行测试似乎是错误的

我希望我没有在这里教任何人吃蛋,但测试应该是可重复和可测量的。如果任何测试失败,您需要能够逐步完成,并识别出错误并纠正它


如果可以在一个目录中修改文件的属性和内容,那么只要测试的所有参数都相同,就应该可以在任何目录中进行修改。如果测试的参数发生变化,那么测试的范围就会增加,例如,对目录或文件的权限会使其成为只读。

我想我理解您想要做什么,但使用随机性进行测试似乎是错误的

我希望我没有在这里教任何人吃蛋,但测试应该是可重复和可测量的。如果任何测试失败,您需要能够逐步完成,并识别出错误并纠正它

如果可以在一个目录中修改文件的属性和内容,那么只要测试的所有参数都相同,就应该可以在任何目录中进行修改。如果测试的参数改变,那么测试的范围就会增加,例如,对目录或文件的权限会使其成为只读的

创建字符串列表,每个字符串代表一个文件路径目录\FileName.ext 生成随机数0-字符串的长度-1 根据随机数获取索引 创建字符串列表,每个字符串代表一个文件路径目录\FileName.ext 生成随机数0-字符串的长度-1 根据随机数获取索引

用Directory.GetFiles列出所有文件,然后随机选择一个怎么样?Directory.GetFiles返回给定目录中的文件列表。我需要一个递归GetFiles函数,然后你可以自己实现递归,或者使用SearchOption.AllDirectories作为第三个参数。你能把你的评论作为答案发表吗,我可以将我的问题设置为“已解决”。只使用Directory.GetFiles列出所有文件,然后随机选择一个文件如何?Directory.GetFiles返回给定目录中的文件列表。我需要一个递归GetFiles函数,然后你可以自己实现递归,或者使用SearchOption.AllDirectory作为第三个参数。你可以将你的评论作为答案发布,我可以将我的问题设置为已解决。Thx对于你的答案,该目录就像一棵树,有很多子目录,深度约为10级。我可以序列化所有子目录中的文件吗?是的,你可以使用递归函数遍历整个树。如果我这样做,我会生成一个完整目录的平面列表paths@Sebastian埃德梅尔:是的,这就是我们需要做的。列表中的每个元素都是一个dirThx的完整路径。对于你的答案,这个目录就像一棵树,有很多子目录和大约10层的深度。我可以序列化所有子目录中的文件吗?是的,你可以使用递归函数遍历整个树。如果我这样做,我会生成一个完整目录的平面列表paths@Sebastian埃德梅尔:是的,这就是我们需要做的。列出其中每个元素都是dirThx的完整路径。对于您的答案,您是对的。对于复制测试,我构建了一个带有单独步骤的场景。但是现在我想测试复制时间,在生产系统中,一些用户可以访问随机文件并自己更改内容或文件。我现在要做的是用NTP同步两台服务器,并在主机上启动randomaccesser,这将给我记录一个CSV:timestamp;服务器名;文件方法文件大小和复制监视器是一个文件观察者,它还创建一个带有时间戳的CSV;服务器名;文件方法,文件大小,以便我可以检查时间戳并查看发生了什么。对于您的答案,您是对的。 对于复制测试,我构建了一个带有单独步骤的场景。但是现在我想测试复制时间,在生产系统中,一些用户可以访问随机文件并自己更改内容或文件。我现在要做的是用NTP同步两台服务器,并在主机上启动randomaccesser,这将给我记录一个CSV:timestamp;服务器名;文件方法文件大小和复制监视器是一个文件观察者,它还创建一个带有时间戳的CSV;服务器名;文件方法,文件大小,以便我可以检查时间戳并查看发生了什么