En cours de chemin d'accès de fichier java qui est en cours d'exécution
Je suis en train d'écrire un simple client/serveur tcp application qui copie un fichier. Je veux le serveur pour afficher la liste des fichiers, le client peut copier. Mon code jusqu'à présent est: est-ce
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());
}
}
}
De sortie:
Current dir : C:\Users\XXXXX\Documents\NetBeansProjects\Test
.\build
.\build.xml
.\manifest.mf
.\nbproject
.\src
.\UsersXXXXXDocumentsNetBeansProjectsTestsrcfile2.txt
Mon problème est que cela me donne le répertoire parent au lieu du répertoire courant. Mon GetFileList.java est situé dans C:\Users\XXXXX\Documents\NetBeansProjects\Test\src
mais il montre C:\Users\Alick\Documents\NetBeansProjects\Test
quelqu'un Peut-il m'aider à résoudre ce problème?
Pourquoi sur terre serait la fin-l'utilisateur veut télécharger des fichiers qui sont dans l'application de l'annuaire?!? Leur offrir un
JFileChooser
(qui par défaut est user.home
) et les laisser prendre à partir de là. BTW - s'il vous plaît ne soyez pas avare de code tirets, et l'utilisation d'une logique et cohérente du système.OriginalL'auteur Dan | 2012-02-05
Vous devez vous connecter pour publier un commentaire.
Le code fonctionne correctement. Il ne vous donne pas l'emplacement de votre fichier source. Il vous donne le répertoire courant où votre programme est en cours d'exécution.
Je crois que vous exécutez le programme à partir de l'IDE, de sorte que le répertoire courant est le répertoire racine de votre projet.
Vous pouvez inscrire votre projet de répertoire src en appelant
new File("src").listFiles()
mais je ne pense pas que vous avez vraiment besoin de ceci: lorsque vous compilez et le package de votre programme de la source et le répertoire source ne sont pas disponibles toute façon.Je pense que si vous voulez être en mesure de montrer une certaine structure de répertoire à votre nom d'utilisateur votre programme doit obtenir la racine du répertoire en tant que paramètre. Par exemple, vous devez exécuter votre programme comme
java -cp YOUR-CLASSPATH MyClass c:/root
Ainsi, tous les fichiers sous
c:\root
seront disponibles.OriginalL'auteur AlexR
Plutôt que de
File fichier = new File(".");
Utiliser le chemin absolu. Vous ne pouvez pas dépendre de l'utilisateur de lancer le programme à partir du répertoire spécifique.
Si vous voulez Netbeans pour le lancement de votre programme à partir du répertoire vous pouvez spécifier le répertoire comme répertoire de travail dans les Propriétés du Projet -> Exécuter
OriginalL'auteur Ashwinee K Jha