我们已经完成了从目录中读取信息的任务。我正在努力寻找具有最大价值的文件。我试过这个;
using System.IO;
static void Main(string[] args)
{
DirectoryInfo folderInfo = new DirectoryInfo("path");
FileInfo[] files = folderInfo.GetFiles();
int largestSize;
for (largestSize = 0; largestSize < files.Length; largestSize++)
{
Console.WriteLine(files[largestSize].Length);
}
Console.ReadLine();
}
但这不起作用。当我说它不起作用时,我的意思是它显示列表中目录中所有文件的文件大小。我完全感到困惑,因为这正是我的导师所建议的。 “为从0开始的最大文件创建一个变量,并循环遍历文件以找到最大的大小”。
我怀疑我可以使用或理解Foreach循环,因为到目前为止我只学习了For,do-while,while,以及if和if else语句。
答案 0 :(得分:6)
您可以使用:
long largestSize = 0;
for (int i = 0; i < files.Length; i++)
{
if (files[i].Length > largestSize)
largestSize = files[i].Length;
}
Console.WriteLine(largestSize);
答案 1 :(得分:0)
按大小降序对文件进行排序
new DirectoryInfo(path).EnumerateFiles()
.OrderByDescending(f => f.Length)
.FirstOrDefault();
并返回最大的文件,如果目录不包含文件,则返回null。
答案 2 :(得分:0)
.Net 4(或.Net 3.5中的GetFiles
):
long maxSize = new DirectoryInfo("path").EnumerateFiles().Max(f => f.Length);
对于更多文件,PLINQ可用于小幅加速:
long maxSize = new DirectoryInfo("path").EnumerateFiles().AsParallel().Max(f => f.Length);
答案 3 :(得分:-1)
DirectoryInfo folderInfo = new DirectoryInfo(@"C:\test");
FileInfo[] files = folderInfo.GetFiles();
long[] sort = new long[files.Length];
for (int largestSize = 0; largestSize < files.Length; largestSize++)
{
int index = 0;
for (int largestSize2 = 0; largestSize2 < files.Length; largestSize2++)
{
if (files[largestSize].Length < files[largestSize2].Length)
{
index++;
}
}
sort[index] = files[largestSize].Length;
}
for (int i = 0; i < sort.Length; i++)
{
Console.WriteLine(sort[i]);
}
Console.ReadLine();
我尝试了最简单的方式我可以理解你首先我循环throug文件并为所有元素做第二个循环我比较值并在数组内排序依赖于teher顺序比较希望你在寻找什么当然,对于排序文件,取决于大小不是最大的,总是排序[0]