最近我遇到了一个问题,我的硬盘驱动器变得令人讨厌地满了,但是在检查了我的个人文件并删除/移动了所有超大的视频文件之后,我仍然有相当少量的可用 ROM。所以我让我的程序员大脑开始工作,并决定不要自己仔细检查每个文件夹和子文件夹,而是使用 Windows 的右键单击 + 属性功能来查看文件有多大以及是否值得保留,我可以编写一个简单的代码来搜索我计算机上的每个文件,将其按完整路径名放入列表中,然后将其文件大小放在它旁边,然后按文件大小从大到小排序。所以我跳到网上,开始做研究,就在那时,一切都为我着迷。一世' 我发现了大量适用于他们指定任务的代码片段,但每当我尝试自己使用它们时,我都会遇到大量的构建错误。也就是说,到目前为止,我发现的最有希望的是:
const string dir = "C:\\";
string[] fns = Directory.GetFiles(dir);
var Sort = from fn in fns
orderby new FileInfo(fn).Length descending
select fn;
foreach (string n in Sort)
Console.WriteLine(n);
不幸的是,这不会触及任何子目录。我已经查看了如何从子目录中获取文件,但是尝试将这些代码片段与这个集成在一起证明比我想象的要麻烦得多。在隧道尽头看到光的罕见情况下,我的程序会触及一个明显受到管理员特权保护的目录(我是唯一的用户,因此是我的计算机的管理员)并像黑猩猩一样抛出错误动物园扔掉粪便。
所以总的来说,我正在寻求帮助的是: - 搜索我计算机上每个文件的程序(我假设从“C:/”驱动器开始是我可以访问所有内容的地方) - 获取每个文件,它的大小, 以及该文件的路径并将其扔到列表/数组/任何内容上 - 按文件大小从大到小对其进行排序 - 将此列表放入 .txt 文件中
最后一部分我实际上不需要帮助,因为我对 Streamwriter 类相当熟悉。如果我的文件/路径/大小的列表/数组/等都符合相同的模式并且可以转换为字符串,我什至可以使用准简单的解析算法按文件大小排序。因此,大约 90.23% 的问题只是获取所有文件,进入或忽略并继续受管理员保护的文件夹(我认为忽略它们是最好的,因为我非常怀疑受保护文件夹中的任何内容都应该被删除。永远。)获取所有这些文件的路径和大小,并组织它们。