我一直试图找到一种方法来显示1MB用户定义文件大小的文件。到目前为止,我已经尝试了这个,但它出现了无效
DirectoryInfo folderInfo = new DirectoryInfo("C:\\Windows");
FileInfo[] files = folderInfo.GetFiles();
Console.WriteLine("Enter a file size in Bytes i.e 500 bytes");
int userSize = int.Parse(Console.ReadLine());
FileInfo[] files = files.GetLegnth(userSize);
我是初学者,我不明白我应该如何获取用户指定的sizwe 1MB内的文件。
提前谢谢
答案 0 :(得分:1)
您可以使用应用于文件数组的IEnumerable extension Where
首先,您需要定义允许的文件大小的上限和下限,然后要求Where扩展程序检查您的文件集合以提取介于您的限制之间的文件
int upperLimit = (1024 * 1024) + userSize;
int lowerLimit = Math.Max(0, usersize - (1024 * 1024));
var result = files.Where(x => x.Length >= lowerLimit && x.Length <= upperLimit);
foreach(FileInfo fi in result)
Console.WriteLIne(fi.Name + " size = " + fi.Length);
答案 1 :(得分:0)
FileInfo[] files = files.GetLegnth(userSize);
这称为如意编程。只是希望系统具有完全符合您需要的功能。
您需要做什么才能浏览文件集并依次查看每个长度。好像
var matched = files.Where(f=>f.Size > userSize);
如果您喜欢LINQ或
foreach(var file in files)
{
if (file.Size>userSize)
{
}
}
如果你不
注意 - 我怀疑这段代码是否有效,我还没有读过File对象中的数据,必须有某种大小的答案 2 :(得分:0)
您可以尝试使用此代码,如果您需要,请确认
using System;
using System.IO;
using System.Linq;
namespace ConsoleApplication1
{
internal class Program
{
private static void Main(string[] args)
{
DirectoryInfo folderInfo = new DirectoryInfo("C:\\Windows");
FileInfo[] files = folderInfo.GetFiles();
Console.WriteLine("Enter a file size in Bytes i.e 500 bytes");
int userSize = int.Parse(Console.ReadLine());
FileInfo[] totalFiles = files.Where(x => x.Length == userSize).ToArray();
}
}
}
答案 3 :(得分:0)
我不会在这个答案中提供代码,因为它非常基本,你应该是找到最终解决方案的人。如果您需要获取大小在某些设置范围内的文件(例如+ - 1MB),您首先需要获取所有文件并通过它们loop
来查找它们的大小。在循环中,您将检查它是否在这些范围内。如果是,您可以将文件/大小/任何内容分配到已找到的内容数组中。如果没有,只需转到下一个文件。
我真的避免 linq解决方案,因为您需要先学习并理解这些原则,然后再使用快捷方式。否则你会在很长一段时间内依赖SO帮助。
我只会告诉你如何获得界限,休息取决于你:
Console.Write("Type the desired size in bytes: ");
string userInput = Console.ReadLine();
int userSize = int.Parse(userInput); // you might consider using TryParse here
int upperBound = userSize + 1048576;
int lowerBound = userSize - 1048576;
// get the files of a directory you want to search
// loop through and compare their size
// if their size is > or = to the lower bound
// AND < or = to the upper bound,
// you've found match and add it to results
只是一个注释:1048576字节= 1兆字节
第二个注意事项:您应该检查下限是高于还是等于零,如果用户输入有效数字等等......