2008-09-17 10 views
42

Je me suis écrit une petite application de téléchargement afin que je puisse facilement récupérer un ensemble de fichiers de mon serveur et les mettre tous sur un nouveau PC avec une installation propre de Windows, sans réellement 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 faire.Comment créer un dossier dans VB s'il n'existe pas?

Je veux que mon programme pour télécharger les applications à program files\any name here\

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

+4

S'il vous plaît noter que vous pouvez exécuter pour les autorisations d'écriture sur des questions \ Program Files \, en particulier sous Vista. Vous devriez considérer un endroit différent. –

Répondre

132
If(Not System.IO.Directory.Exists(YourPath)) Then 
    System.IO.Directory.CreateDirectory(YourPath) 
End If 
+18

Ne vous embêtez pas vérifier pour voir si elle existe, cela ne fait que perdre du temps. CreateDirectory ne déclenchera pas d'exception. En outre, quelqu'un pourrait créer le répertoire entre le moment où vous avez vérifié et le moment où vous l'avez créé, rendant le contrôle encore plus inutile. –

+3

Oui, mais si le dossier existe, il ne voudra peut-être pas copier l'application, donc la vérification sera utile dans cette situation. – Seyren

+2

Si c'est le cas, il devrait vérifier si le fichier spécifique existe plutôt que seulement le répertoire. – paz

5

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

(Vous devrez peut-être: Imports System.IO)

5

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

+0

Vous avez été le premier à poster de quelques secondes. Vous devriez obtenir des votes. –

9

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 
19

Sous System.IO, il y a une classe appelée Directory. Effectuez les opérations suivantes:

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

Il veillera à ce que le répertoire est là.

+3

Il en ira de même Directory.CreateDirectory (chemin). La pré-vérification n'est pas nécessaire. –

+2

Cela semble (presque) identique à la réponse marquée o.O –

1

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

4

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

En outre, dans Vista, vous pouvez probablement pas écrire en C: directement à moins que vous l'exécutez en tant qu'administrateur, vous pourriez vouloir contourner cela et créer le répertoire que vous voulez dans un sous-répertoire de C: (que je dirais est une bonne pratique à suivre de toute façon - son incroyable combien de gens jettent juste de la merde sur C:..

espoir qui aide

4

(importations System.IO)

if Not Directory.Exists(Path) then 
    Directory.CreateDirectory(Path) 
end if
+2

Vous n'avez pas besoin de vérifier s'il existe d'abord, CreateDirectory le fera pour vous. –

10

Depuis la question n'a pas précisé .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 
+1

excellent exemple :) – Teddybugs

0

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 le placer où vous voulez.

Vive

3
If Not Directory.Exists(somePath) then 
    Directory.CreateDirectory(somePath) 
End If 
0

Il suffit de faire 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 

Je déclarais le chemin du dossier en tant que chaîne (sPath) afin de cette façon si vous l'utilisez plusieurs fois il peut être changé facilement, mais il peut aussi être changé par le programme lui-même.

J'espère que ça aide!

-nfell2009

Questions connexes