2012-02-05 11 views
5

Estoy intentando escribir una aplicación cliente/servidor tcp simple que copie un archivo. Quiero que el servidor liste los archivos que el cliente puede copiar. Mi código hasta ahora es la siguiente:Obtener la ruta actual del archivo java que se está ejecutando

import java.io.*; 
public class GetFileList 
{ 
    public static void main(String args[]) throws IOException{ 
     File file = new File("."); 
     File[] files = file.listFiles(); 
     System.out.println("Current dir : " + file.getCanonicalPath()); 
     for (int fileInList = 0; fileInList < files.length; fileInList++) 
     { 
      System.out.println(files[fileInList].toString()); 
     } 
    } 
} 

Salida:

Current dir : C:\Users\XXXXX\Documents\NetBeansProjects\Test 
.\build 
.\build.xml 
.\manifest.mf 
.\nbproject 
.\src 
.\UsersXXXXXDocumentsNetBeansProjectsTestsrcfile2.txt 

Mi problema es que me está dando el directorio padre en lugar del directorio actual. Mi GetFileList.java se encuentra en C:\Users\XXXXX\Documents\NetBeansProjects\Test\src pero muestra C:\Users\Alick\Documents\NetBeansProjects\Test ¿Alguien me puede ayudar a solucionar esto?

+0

¿Por qué razón el usuario final desea cargar los archivos que se encuentran en la aplicación de la propia ¿¡¿directorio?!? Ofréceles un 'JFileChooser' (que de forma predeterminada es' user.home') y déjalos que lo tomen desde allí. Por cierto, no seas tan mezquino con las sangrías de código y utiliza un sistema lógico y coherente. –

Respuesta

3

El código funciona correctamente. No le da la ubicación de su archivo fuente. Le proporciona el directorio actual donde se ejecuta su programa.

Creo que está ejecutando el programa desde IDE, por lo que el directorio actual en este caso es el directorio raíz de su proyecto.

Puede enumerar el directorio src de su proyecto llamando al new File("src").listFiles(), pero no creo que realmente lo necesite: cuando compila y empaqueta su programa, la fuente y el directorio fuente no están disponibles de todos modos.

Creo que si desea poder mostrar alguna estructura de directorio a su usuario, su programa debería obtener el directorio raíz como parámetro. Por ejemplo, usted debe trabajar en el programa como

java -cp YOUR-CLASSPATH MyClass c:/root

Por lo tanto, todos los archivos bajo c:\root estarán disponibles.

+0

O Veo el problema. Lo ejecuté en cmd y es correcto. ¡Gracias por la explicación! – Dan

0

En lugar de Archivo = new File ("."); Utilice la ruta absoluta. No puede depender del programa de inicio del usuario desde un directorio específico.

Si quieren Netbeans para poner en marcha su programa de directorio específico puede especificar el directorio como el directorio de trabajo en Propiedades del proyecto -> Ejecutar

Cuestiones relacionadas