2008-09-17 22 views
42

Me escribí una pequeña aplicación de descarga para poder tomar fácilmente un conjunto de archivos de mi servidor y ponerlos en una nueva PC con una instalación limpia de Windows, sin tener que ir a la red. Lamentablemente, tengo problemas para crear la carpeta en la que quiero ponerlos y no estoy seguro de cómo hacerlo.¿Cómo creo una carpeta en VB si no existe?

Quiero que mi programa para descargar las aplicaciones a program files\any name here\

Así que básicamente necesita una función que comprueba si existe una carpeta, y si lo hace no lo crea.

+4

Tenga en cuenta que es posible que encuentre a problemas de permisos de escritura a \ Archivos de programa \, sobre todo en Vista. Deberías considerar una ubicación diferente. –

Respuesta

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

No se moleste en verificar si existe, solo desperdicia tiempo. CreateDirectory no arrojará una excepción. Además, alguien podría crear el directorio entre la hora que marcó y la hora en que la creó, lo que hace que el cheque sea aún más inútil. –

+3

Sí, pero si la carpeta existe, es posible que no quiera copiar la aplicación, por lo que la verificación será útil en esa situación. – Seyren

+2

En ese caso, debería verificar si existe el archivo específico en lugar de solo el directorio. – paz

5

Prueba esto: Directory.Exists(TheFolderName) y Directory.CreateDirectory(TheFolderName)

(Es posible que necesite: Imports System.IO)

5

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

+0

Usted fue el primero en publicar por unos segundos. Deberías obtener algunos votos. –

9

Pruebe la clase System.IO.DirectoryInfo.

La muestra 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

Bajo System.IO, hay una clase llamada Directorio. Haga lo siguiente:

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

Se asegurará de que el directorio está allí.

+3

También lo hará Directory.CreateDirectory (ruta de acceso). La verificación previa no es necesaria. –

+2

que se ve (casi) idéntico a la respuesta marcada o.O –

1

Debería intentar usar el objeto del sistema de archivos o FSO. Hay muchos métodos que pertenecen a este objeto que comprueban si existen carpetas y también la creación de nuevas carpetas.

4

Directory.CreateDirectory() debería hacerlo. http://msdn.microsoft.com/en-us/library/system.io.directory.createdirectory(VS.71).aspx

Además, en Vista, es probable que no se puede escribir en C: directamente, a menos que lo ejecute como administrador, por lo que es posible que quieran pasar por alto eso y crear el directorio que desee en un sub-directorio de C: (lo que yo diría que es una buena práctica a seguir de todos modos - es increíble cómo muchas personas simplemente descargan basura en C:..

Espero que ayude

4

(importaciones System.IO)

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

No es necesario que compruebe si existe primero, CreateDirectory hará eso por usted. –

10

Dado que la pregunta no especificaba .NET, esto debería funcionar en VBScript o VB6.

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

gran ejemplo :) – Teddybugs

0

veo cómo podría funcionar, lo que sería el proceso para crear un cuadro de diálogo que permite al usuario el nombre de la carpeta y colocarla donde desee.

Saludos

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

a hacer esto:

 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 

declaré la ruta de la carpeta como una cadena (sPath) de manera de que si lo hace utilizarlo varias veces que se puede cambiar fácilmente, pero también se puede cambiar a través del programa en sí.

Espero que ayude!

-nfell2009

Cuestiones relacionadas