获取用户定义大小的文件C#

时间:2015-01-13 23:23:43

标签: c#

我一直试图找到一种方法来显示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内的文件。

提前谢谢

4 个答案:

答案 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兆字节
第二个注意事项:您应该检查下限是高于还是等于零,如果用户输入有效数字等等......