0

Hello all,
So lets say I have a folder and in it I have 3 files.
How would I go about Identifying the biggest(in bytes) and moving it somewhere else on the hard drive, say C:\BiggestFile.jpg?

Thanks in advance!

Shredder2794

2
Contributors
5
Replies
6
Views
5 Years
Discussion Span
Last Post by thines01
Featured Replies
  • I would do it like this: [CODE] Imports System.IO Imports System.Linq Module Module1 Function GetLargestFile(ByVal strDir As String, ByVal strPattern As String) As String Return _ (From strFile In Directory.GetFiles(strDir, strPattern) Let FileInfo = New FileInfo(strFile) Order By FileInfo.Length Descending Select FileInfo.FullName).First() End Function Sub Main() Console.WriteLine(GetLargestFile("c:\myPath\", "*.jpg")) End Sub … Read More

2

I would do it like this:

Imports System.IO
Imports System.Linq

Module Module1
   Function GetLargestFile(ByVal strDir As String, ByVal strPattern As String) As String
      Return _
      (From strFile In Directory.GetFiles(strDir, strPattern)
      Let FileInfo = New FileInfo(strFile)
          Order By FileInfo.Length Descending
          Select FileInfo.FullName).First()
   End Function

   Sub Main()
      Console.WriteLine(GetLargestFile("c:\myPath\", "*.jpg"))
   End Sub
End Module

Edited by thines01: typo

0

I'm no expert at VB and am having some trouble with this.
Can you elaborate some more?

0

That method uses Directory.GetFiles() to get all of the files from a directory.
For each file it finds, it creates a new FileInfo object.
The .Length property tells the file size.
It then sorts the FileInfo objects by size in descending order.
It then returns the name of the first one in that list.

All of that is wrapped into a function called GetLargestFile() that takes the name of the directory to look in and the types of files to find.

0

How would I go about doing this recursively for all the files in the current directory, and all the files in all the child directories?

Sorry for all the noob questions.

0

Assuming you have permission to all of the subdirectories, you could add something simple like this:

Sub Main()
      Dim strRoot As String = "c:\myPath\"
      Dim lst_strDirs As List(Of String) = Directory.GetDirectories(strRoot, "*.*", SearchOption.AllDirectories).ToList()
      lst_strDirs.ForEach(Sub(strDir) Console.WriteLine(GetLargestFile(strDir, "*.jpg")))
   End Sub

BUT you should change the .First() in the GetLargestFile() to .FirstOrDefault() if there could be empty directories in the path.

See this article in in MSDN that (although in C#) explains a recursive method and a non-recursive method if you don't have read permission to all subdirectories.

This article has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.