Sort
files, sizeFiles have varying sizes. In VB.NET, we can use Directory.GetFiles
and OrderByDescending
along with the FileInfo
type to sort them from largest to smallest.
With this function, we can determine the largest file in a directory. This may be the most important file. Alternatively, we can find the smallest file.
We first invoke Directory.GetFiles
, which returns a string
array of the files in the directory. Next, we invoke the OrderByDescending
method.
OrderByDescending
call is more complex. It receives a Func
argument—this is an anonymous method.Func
method is created with anonymous method syntax. The Function receives a string
(the file name) and returns its length.OrderByDescending
method sorts the files by their lengths. We then convert its result (an IEnumerable
) into an array with ToArray
.Imports System.IO Module Module1 Sub Main() ' The target directory. Dim dir As String = "C:\\programs" ' Get files. Dim files() As String = Directory.GetFiles(dir) ' Order files from largest size to smallest size. Dim sorted() As String = files.OrderByDescending( New Func(Of String, Integer)(Function(fn As String) Return New FileInfo(fn).Length End Function)).ToArray ' Loop and display files. For Each element As String In sorted Console.WriteLine(element) Console.WriteLine(New FileInfo(element).Length) Next End Sub End ModuleC:\\programs\file.py 611 C:\\programs\file.rb 369 C:\\programs\file.php 235 C:\\programs\file.pl 184
In the output, we see that the folder contains four script files. The largest is file.py
—it is 611 bytes. The smallest meanwhile is file.pl
which is 184 bytes.
List
of KeyValuePairs
) you could avoid accessing FileInfo
so many times.This program uses System.IO
functions to get a file array and their sizes. And with OrderByDescending
we specify a lambda expression (an anonymous method) to sort the file names.