web-dev-qa-db-fra.com

Comment créer un dossier dans VB s'il n'existe pas?

Je me suis écrit une petite application de téléchargement pour pouvoir facilement récupérer un ensemble de fichiers sur mon serveur et les placer tous sur un nouveau PC avec une nouvelle installation de Windows, sans aller sur le net. Malheureusement, j'ai des problèmes pour créer le dossier dans lequel je veux les mettre et je ne sais pas comment s'y prendre.

Je veux que mon programme télécharge les applications sur program files\any name here\

Donc, fondamentalement, j'ai besoin d'une fonction qui vérifie si un dossier existe, et sinon, il le crée.

50
John
If(Not System.IO.Directory.Exists(YourPath)) Then
    System.IO.Directory.CreateDirectory(YourPath)
End If
149
Quintin Robinson

Sous System.IO, il existe une classe appelée Répertoire. Faites ce qui suit:

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

Cela garantira que le répertoire est là.

22
MagicKat

Comme la question ne spécifiait pas .NET, cela devrait fonctionner dans VBScript ou VB6.

Dim objFSO, strFolder
strFolder = "C:\Temp"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(strFolder) Then
   objFSO.CreateFolder(strFolder)
End If
11
Rick

Essayez la classe System.IO.DirectoryInfo .

L'exemple de 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
10
Guy Starbuck

Essayez ceci: Directory.Exists(TheFolderName) et Directory.CreateDirectory(TheFolderName)

(Tu pourrais avoir besoin de: Imports System.IO)

5
GEOCHET

VB.NET? System.IO.Directory.Exists (chemin de la chaîne)

5
Chris Bilson

Directory.CreateDirectory () devrait le faire. http://msdn.Microsoft.com/en-us/library/system.io.directory.createdirectory (VS.71) .aspx

En outre, dans Vista, vous ne pouvez probablement pas écrire directement dans C: à moins de l'exécuter en tant qu'administrateur. Par conséquent, vous voudrez peut-être ignorer cela et créer le répertoire que vous souhaitez dans un sous-répertoire de C: (ce que je dirais: une bonne pratique à suivre quand même. - C'est incroyable combien de personnes se contentent de jeter de la merde sur C:

J'espère que ça t'as aidé.

4
Mostlyharmless

(importations System.IO)

si Non Directory.Exists (Path), alors 
 Directory.CreateDirectory (Path) 
 se termine si
4
Wayne
If Not Directory.Exists(somePath) then
    Directory.CreateDirectory(somePath)
End If
3
PyongYang

Vous devriez essayer d'utiliser l'objet système de fichiers ou FSO. De nombreuses méthodes appartenant à cet objet vérifient l'existence de dossiers et en créent de nouveaux.

1
Dave

Faites juste ceci:

        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

J'ai déclaré le chemin du dossier sous forme de chaîne (sPath). Ainsi, si vous l'utilisez plusieurs fois, vous pouvez le modifier facilement, mais également via le programme lui-même.

J'espère que ça aide!

-nfell2009

0
BaeFell

Je vois comment cela fonctionnerait, quel serait le processus pour créer une boîte de dialogue qui permet à l'utilisateur de nommer le dossier et de le placer où vous voulez.

À votre santé

0
Andrew