como accedo al directorio raiz?

Iniciado por Legnak, 21 Enero 2014, 20:08 PM

0 Miembros y 1 Visitante están viendo este tema.

Legnak

Hola, me gustaria que me dijesen como puedo utilizar el directorio raiz, me refiero al sitio donde esta el programa, que procedimiento debo usar?
por si no entienden es que lo necesito para abrir algunos PDF que he puesto en el mismo directorio del exe y quisiera saber cual es su directorio

Saludos

.:Weeds:.

#1
Cita de: Legnak en 21 Enero 2014, 20:08 PM
Hola, me gustaria que me dijesen como puedo utilizar el directorio raiz, me refiero al sitio donde esta el programa, que procedimiento debo usar?
por si no entienden es que lo necesito para abrir algunos PDF que he puesto en el mismo directorio del exe y quisiera saber cual es su directorio

Saludos
Código (vbnet) [Seleccionar]

Dim path As String
path = System.IO.Path.GetDirectoryName( _
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)


Fuente: http://msdn.microsoft.com/en-us/library/aa457089.aspx

Edito: El otro metodo no lo he probado asi que te dejo otro mas facil.
Código (vbnet) [Seleccionar]
Private ReadOnly DirectorioActual As String = Directory.GetCurrentDirectory()

Saludos.


Legnak


El Benjo

tambien prueba usando:

Código (vbnet) [Seleccionar]

Dim Directorio As string
Directorio = Application.StartupPath
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

Eleкtro

#4
Hola

No es lo mismo el directorio de trabajo actual (WirkingDirectory), que el directorio donde se encuentra el ensamblado, ya que el primero no es estático y se puede modificar.

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
EDITO: Lo que dijo el compañero El Benjo es lo correcto.

Para obtener el directorio de inciio de la aplicación puedes utilizar este método:
Código (vbnet) [Seleccionar]
Application.StartupPath

Y para averiguar el directorio de trabajo actual...bueno, esto es complétamente innecesario a menos que modifiques intencionadamente el directorio de trabajo en algun lugar del código y que por ese motivo debas controlar los cambios de directorio.

...Por ejemplo:

Código (vbnet) [Seleccionar]
Dim Archivo As String = "Archivo.pdf"

...al momento que vayas a usar la variable Archivo para ejecutarlo, cargarlo, pasarlo como parámetro a un método, o lo que estés haciendo, ya se toma en cuenta el directorio de trabajo actual, porque ese es el directorio actual.

Es decir, lo de arriba, es exáctamente lo mismo que hacer esto:

Código (vbnet) [Seleccionar]
Dim Archivo As String = IO.Path.Combine(IO.Directory.GetCurrentDirectory, "Archivo.pdf")
Dim Archivo As String = IO.Path.Combine(Application.StartupPath, "Archivo.pdf")
Dim Archivo As String = IO.Path.Combine(My.Application.Info.DirectoryPath, "Archivo.pdf")
Dim Archivo As String = IO.Path.Combine(CurDir(), "Archivo.pdf")
Dim Archivo As String = ".\Archivo.pdf"

Dim DirectorioActual As String = "" ' Nada


Así que se puede decir que no necesitas especificar el directorio de trabajo.

Saludos!








Legnak

gracias a todos por sus respuestas  ;D

Eleкtro

De todas formas aquí tienes un método (muy simple) de uso genérico:

Código (vbnet) [Seleccionar]
    ' [ Get Application Path ]
    ' ( By Elektro )
    '
    ' Usage Examples :
    ' MsgBox(GetApplicationPath())
    ' MsgBox(GetApplicationPath(True))
     
    ''' <summary>
    ''' Gets the startup application path.
    ''' </summary>
    ''' <param name="FullPath">
    ''' if set to <c>true</c> returns the full path,
    ''' otherwise only returns the directory path.
    ''' </param>
    ''' <returns>System.String.</returns>
    Private Function GetApplicationPath(Optional ByVal FullPath As Boolean = False) As String

        Select Case FullPath

            Case True
                Return IO.Path.Combine(My.Application.Info.DirectoryPath(),
                                       Process.GetCurrentProcess().MainModule.ModuleName)

            Case Else
                Return My.Application.Info.DirectoryPath

        End Select

    End Function


PD: Utilizo los métodos de My.application porque son compatibles con proyectos de todo tipo sin tener que importar referencias.

Saludos