65

I wrote myself a little downloading application so that I could easily grab a set of files from my server and put them all onto a new pc with a clean install of Windows, without actually going on the net. Unfortunately I'm having problems creating the folder I want to put them in and am unsure how to go about it.

I want my program to download the apps to program files\any name here\

So basically I need a function that checks if a folder exists, and if it doesn't it creates it.

Mark Hurd
  • 10,665
  • 10
  • 68
  • 101
  • 4
    Please note that you may run in to permissions issues writing to \Program Files\, particularly under Vista. You should consider a different location. – Jeff Paulsen Sep 17 '08 at 18:17

12 Answers12

190
If Not System.IO.Directory.Exists(YourPath) Then
    System.IO.Directory.CreateDirectory(YourPath)
End If
schlebe
  • 3,387
  • 5
  • 37
  • 50
Quintin Robinson
  • 81,193
  • 14
  • 123
  • 132
  • 26
    Don't bother checking to see if it exists, it just wastes time. CreateDirectory won't throw an exception. Also, someone could create the directory between the time you checked and the time you created it, making the check even more pointless. – Jonathan Allen Oct 04 '08 at 05:45
  • 4
    Yes, but if the folder exists then he may not want to copy the app over, so the check will be useful in that situation. – Seyren Feb 23 '12 at 06:54
  • 3
    If that case, he should check if the specific file exists rather than just the directory. – paz Sep 13 '13 at 14:53
  • I got the same problem in Silverlight, but this answer does not help...hmm. It seems like there is a security rule in Silverlight that does not allow to access to path – NoName May 14 '18 at 07:25
24

Under System.IO, there is a class called Directory. Do the following:

If Not Directory.Exists(path) Then
    Directory.CreateDirectory(path)
End If

It will ensure that the directory is there.

MagicKat
  • 9,695
  • 6
  • 32
  • 43
12

Try the System.IO.DirectoryInfo class.

The sample from MSDN:

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\MyDir")
        Try
            ' Determine whether the directory exists.
            If di.Exists Then
                ' Indicate that it already exists.
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            di.Create()
            Console.WriteLine("The directory was created successfully.")

            ' Delete the directory.
            di.Delete()
            Console.WriteLine("The directory was deleted successfully.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class
Guy Starbuck
  • 21,603
  • 7
  • 53
  • 64
11

Since the question didn't specify .NET, this should work in VBScript or VB6.

Dim objFSO, strFolder
strFolder = "C:\Temp"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(strFolder) Then
   objFSO.CreateFolder strFolder
End If
Rick
  • 611
  • 1
  • 5
  • 14
  • A nice example for the folks working in traditional VB/VBA but I have a nit-picky syntax issue: the parentheses don't actually do anything in the statement "objFSO.CreateFolder (strFolder)". They just force the variable's string-value to a (string) value before passing it to CreateFolder. The correct syntax should be either "objFSO.CreateFolder strFolder" or "Call objFSO.CreateFolder(strFolder)". – pstraton Sep 26 '19 at 19:11
7

Try this: Directory.Exists(TheFolderName) and Directory.CreateDirectory(TheFolderName)

(You may need: Imports System.IO)

GEOCHET
  • 21,119
  • 15
  • 74
  • 98
5

VB.NET? System.IO.Directory.Exists(string path)

Chris Bilson
  • 1,884
  • 1
  • 17
  • 20
4

Directory.CreateDirectory() should do it. http://msdn.microsoft.com/en-us/library/system.io.directory.createdirectory(VS.71).aspx

Also, in Vista, you probably cannot write into C: directly unless you run it as an admin, so you might just want to bypass that and create the dir you want in a sub-dir of C: (which i'd say is a good practice to be followed anyways. -- its unbelievable how many people just dump crap onto C:

Hope that helps.

Mostlyharmless
  • 2,285
  • 19
  • 28
4

(imports System.IO)

if Not Directory.Exists(Path) then
  Directory.CreateDirectory(Path)
end if
Wayne
  • 38,646
  • 4
  • 37
  • 49
3
If Not Directory.Exists(somePath) then
    Directory.CreateDirectory(somePath)
End If
Siddharth Rout
  • 147,039
  • 17
  • 206
  • 250
1

You should try using the File System Object or FSO. There are many methods belonging to this object that check if folders exist as well as creating new folders.

Dave
  • 89
  • 1
  • 2
  • 11
0

Just do this:

        Dim sPath As String = "Folder path here"
    If (My.Computer.FileSystem.DirectoryExists(sPath) = False) Then
        My.Computer.FileSystem.CreateDirectory(sPath + "/<Folder name>")
    Else
        'Something else happens, because the folder exists
    End If

I declared the folder path as a String (sPath) so that way if you do use it multiple times it can be changed easily but also it can be changed through the program itself.

Hope it helps!

-nfell2009

BaeFell
  • 640
  • 1
  • 8
  • 28
0

I see how this would work, what would be the process to create a dialog box that allows the user name the folder and place it where you want to.

Cheers