VB.NET : File

["?0?1w0*0|string-concat-vbnet;datetime-format-vbnet;do-while-vbnet;file-vbnet;-vbnet|concat;dates",["F@dO","OIBEJCBG\\gQA","OBOBSTUUUUTTUUUUYGDGDHDGDGDGDGDGDGDHDGDHDGDGDGDHDGDGDOBCCOCCPLWCBSTTUUUUTTUUUU","wslshr.","Keyword","Array","Dictionary","List","String","ArrayList","Cast","Class","Concat","Console","DataTable","Dates","DateTime","Enum","File","For","Format","If","IndexOf","Lambda","LINQ","Nothing","Parse","Process","Property","Random","Regex","Replace","Select","Sort","Split","StringBuilder","Sub","Substring","While","Recursive Files."," A program needs to recurse through all directories. It starts at a certain point. It then lists all the file paths in those directories. We can use an efficient and bug-free VB.NET Function for this purpose. ","Function ","function-vbnet","Example."," First, this is the code for the VB.NET Function that traverses through all subdirectories and then all further subdirectories. It returns a List(Of String), which is often used for file paths. ","Path ","path-vbnet","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","VB.NET program that recurses directories","\n\nImports System.IO","\n\n''' <summary>\n''' This class contains directory helper method(s).\n''' </summary>\n","Public Class FileHelper","\n\n ''' <summary>\n ''' This method starts at the specified directory.\n ''' It traverses all subdirectories.\n ''' It returns a List of those directories.\n ''' </summary>\n ","Public Shared Function ","GetFilesRecursive","(ByVal initial As String) As List(Of String)","\n ' This list stores the results.\n ","Dim result As New List(Of String)","\n\n ' This stack stores the directories to process.\n ","Dim stack As New Stack(Of String)","\n\n ' Add the initial directory\n ","stack.Push(initial)","\n\n ' Continue processing for each stacked directory\n ","Do While (stack.Count > 0)","\n ' Get top directory string\n ","Dim dir As String = stack.Pop\n Try","\n ' Add all immediate file paths\n ","result.AddRange(","Directory.GetFiles","(dir, \"*.*\"))","\n\n ' Loop through all subdirectories and add them to the stack.\n ","Dim directoryName As String\n For Each directoryName In ","Directory.GetDirectories","(dir)\n stack.Push(directoryName)\n Next\n\n Catch ex As Exception\n End Try\n Loop","\n\n ' Return the list\n ","Return result\n End Function\n\nEnd Class\n\nModule Module1","\n\n ''' <summary>\n ''' Entry point that shows usage of recursive directory function.\n ''' </summary>\n ","Sub Main()","\n ' Get recursive List of all files starting in this directory.\n ","Dim list As List(Of String) = ","FileHelper.GetFilesRecursive","(\"C:\\Users\\Sam\\Documents\\Perls\")","\n\n ' Loop through and display each path.\n ","For Each path In list\n Console.WriteLine(path)\n Next","\n\n ' Write total number of paths found.\n ","Console.WriteLine(list.Count)\n End Sub\n\nEnd Module","We see the"," actual function that you will want in your project. It uses Stack to build up a list of paths it needs to process. It then processes each directory path in the stack individually, adding all the files each time. ","Stack ","stack-vbnet","Note: ","The Main sub here shows how to call FileHelper.GetFilesRecursive and specify a path string.","Tip: ","The path string must specify an absolute path, or one relative to the program. Here, we specify a C:\\ path on my computer.","Output."," The output of the above program on my computer is a list of 677 file paths. Each path is fully specified and absolute. They are ordered alphabetically. The sample next shows three of the first several lines printed. ","Note: ","I checked the directory in Windows Explorer by right-clicking on the folder and selecting Properties.","And: ","The dialog shows that there are 677 files in the folder. Further inspection shows all file paths are accurate.","Example output","\n\nC:\\Users\\Sam\\Documents\\Perls\\Category1.txt\n...\nC:\\Users\\Sam\\Documents\\Perls\\Style\\all.css\n...\nC:\\Users\\Sam\\Documents\\Perls\\Main\\2D-Array-IEnumerable.html\n...\n677","Summary."," Here we saw a powerful and efficient recursive directory and subdirectory traversing function. It works reliably in programs. It is tested. The function provides accurate results. ","Review: ","It demonstrates an excellent use of Stack and List. It is highly useful in many projects.","List ","list-vbnet","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto"],"url(data:image/jpeg;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL4AAABsCAMAAADjXPiLAAAAMFBMVEX///9522Pv/un1//JS0zDB77bT9Myw6aWU4oXp/+H5//ft/+b8//ry/+3h+Ns1zgBIqVA6AAAC7UlEQVR4Xu3Y65KqMBAEYHIP9/d/23NWZAiNVFxr1aZq+p8KVR84w4Q088P4HNp9xq5hzHwWE+EC7EDNx/jUQhw3H8PuRz4moL+7FN8jv+fm18uHlb8C2pC98M0PoBvh9lPz2zYa8dsbYOjFP/Dz2yj8tAAGqB5ufiu3P98BVqbvFfhhK/4lncxeen5ZPb6B6umvwG+PX69R/stR/jWfPJdq3YR8d6kHp4Gp29grTd0g30aonbbj50cvfIdLth9Awkxun+GL/Clt+iyFX5T+VH0tcJ/nmzWlK9j/wbfFNGMy8EeOty0joPK5k6svlT0F30fk34raz4dEPI53o8Q9sSXR8W5TRUFXip9rk7C/V0R6oknsl/kmIUjGrVk7o+ziH3M5nL/H9yanWMp7O7rheIYp/4mw3HH36eL/9cp4KpdDsehyVy4uHCs/lcshVxR/V55tWflS7m7XCPfjZXHEyvcreH8xcZm0owwuTr5dvXlfSsnuV3eOkx/Fu2/k7Pb7QSMbHzsXHqPd/vSek2/gePwsg4uOj0MLerfZ927HyI+w9dylrRegdxn5og13bYS/YygH1wyprvTexsdamdZSlzmA5zPy/QoQrMELksH1Cv+9scdS2coJi5+PH46NGrCZZXDx8dPxMTmJBaqv5+NLodtGFpjSDk6+W0LHd/ODx4yBwWW3wWWKbOYt+WbeMr6XHx/V+ZODS/iV+fKJ0veP7quxt0jxWDa+SB+nhbDxPXhrW4Vc/Am41X1yLn4AbnWrkIufgVvdJ+fim7mSCfxUfIfa+j45Ex/eTGRxdj64Rib+qfL0uiwT/3xxU6Fx8AXgEIAX1suF8fCns5fy/lBWowwuHr4Y86FBw9lP9lf8uOYO6Nac/vDK0AqHW2xlcOEf8wy/fshfFJ6X4QQFPhS/WbANBPw/iPKVr3zlK1/5yle+8pWvfOVXIm4GvvKJonzlK99AhG+XMPFpx5bylf96lK985Stf+cpXvvKVr/x/2oEPrjSYUD0AAAAASUVORK5CYII=)"]

["url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAACZCAMAAADw+V8SAAAADFBMVEX////09PTk5OTU1NQ/cPF/AAABzUlEQVR4Xu3bQarDMBRD0Xel/e/5w59m0FiNRQnWBg6vBidynVkOAJIAYLYEJF9j6VHxqly9Zxzfiig4T2jycpQPVMCQ4yiA4hCs0ebB8BMhWKRtlvxYFIy0w8J2x5JdsmR3LLwl1CSbmmQHy5RGNcmmJlk1yaYm2aGUj4ULUSblY9lvG2t6Fj1LU7M065b+k+/vrBcNpGxzIik0KKGGqDkRVQayiqaAGrJekVBDVCqIXjGI6ktEDTv7xHyyZrZQV0uzjxpWpZwaLtI2aliTcE4NK9LoG2pYkPiy1BFIITXclCboCGGClpUFL6QnqSaZySO3hpJLQ+HF9CRq59SqSaa0TLZ+XZLX05OIJLckEkm5dCRzpIUOVd8j+vsek6Ug1Z6E/af7qCaNay981KSR3Wo2PWl60hSkoOy2KE2NokZp3kjxQupQhzrUoUb3klAnJ/nVZYl9joILvRkUNI+8jjQwglawqWGpJtmqSbYqUm71i0i/M8qt0kiv3ssrKaxU/+9Eq0e59vvZzAvPHK0nqUMdih+m6O0W1T2wtVgqPq+6d3ryqDBUdIW3ZdVepM20LGpVhFrBolVQ1ardpnCYEEA5pgAKPiYvnDYCRMgfJbla10Up7TkAAAAASUVORK5CYII=)","url(data:image/png;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQIAAAAyCAMAAACAnCV7AAAAGFBMVEX///++vr7q6uqMjIxnZ2fY2NioqKhQUFAPXtNUAAADzUlEQVR4XsXa23KEMAwDUN8S/v+P++QJaKBCu7T4MYU2cxxUL7M2Nyw3qIALwszMt9NK9zBSh5uHnVcef23fx8phy7zyCQKscoFgOxeDfdVdgiETTDM/IJQPwzpcU93l4bQZ1zW8mqCumJZT+rqPELQgLNOtjoKWXB7MebggsiF717WOF6tIemnUyZmKvLit9p7tgQfP8Y4+hVHQkYuzO7GZe4LWvG2wjuJVzbOfjguC7MX2SEaQeyenBIlCSIA55pygazxC4O3VBM4I/OBUZDPW7aIEVs3JCdjz5wpBNGY3whjBOBBMcia9d8oJHHvLCeoXAucEyz52BEkJ7LAwSOuywTiBFaxygi2fIJhb7VvqnCBXo+iTEOtnnAAimxK0l06ANrnHM04wDyfb0RavbWJOMAWC2Qb+PYHtIL05kADQ6qQnhoUBywlcIFiDcHxJgHjOCcyOUEm6UfYnBFEdifEkQbjdIfDBN754pkowbxGsSEiVgBUnwKrLAxmwzrJA+KfYYm32DgEfDSagE4IURqMm6/29Q8BHg9r1lBMELFICiMQXCMhoAGHICSZIcgLDSNQJEqgkAh5judPjBNGQAgFGok5QzxDE+ZMQuzVOEIUCnAAjUScYYC4R8NFgrp1xAu8DrRBgJOoE8xsCPhpU5xQlcKAWCCASRYIojYAHIrgAChBgpZupBBiJnADrMYLZVBiGhAARQiLASHyHAJMGw5ARYGUIBOiZ7xDgkIy7oFmAr5BdIcBIfC8LcDRoFOMEaym7lwIBRuIQCSwVAnE0GA0iTYdowAkwEkUClwj4aIBvYodEsAxcJog2SJEgBALxSYjFzQmwmaUQYCT++4CM2y/II43AO9YUAozE//mYxEeDag2JoI9BSgQYiS98WAbjBneBABKlNAKMxLcIegvRLQmBAANRI8BIfIEAuTAMOQGGQWgEGIlvEcRCdpg7ZQItCxBw85cIOpCChuHzDwJGYsoEPgiB4jUxDPU4TJUAI3FTCXxzTiCMBgmZLhPMTwmiPiQoiYCPBt1fmSDg045MYEMm6FYPjYD//fiIwPUBGcs/IiiFgD8JLa0TRKG4TmApEjROPEPg5E2M/hWLmEBCCSx1guQEU3ixCSeZEDCBwiVOECURtI1JBLQDrhOYVwuQNwiMwIZKkE8SOIkz/CKowxd1UTvPVpMpOxCQb5/GL3sOr+7CEAKRiLlvl5VhvxMML/LKHZH4H+220Z1Ovz0aBInMq/K4GpjH+c3XBkDgG6u8tdO8ORqk6QTTQRjiUCSIeo/Ahj1R+E9RrrC/rx+b5Vw/IzNKKQAAAABJRU5ErkJggg==)"]