IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

FTPClient listFiles UNIX répertoire avec espace


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut FTPClient listFiles UNIX répertoire avec espace
    Bonjour à tous,

    Après avoir épluché toute une panoplie de forum anglophone comme francophone, j'avoue complètement sécher...

    Sur un serveur FTP windows, la command "listFiles(String path)", me retourne correctement la liste des fichiers présent dans mes répertoires sur mon serveur.

    Sur un serveur FTP sous UNIX, dès que je tente de lister un répertoire qui contient un espace dans son nom, FTPClient me retourne une liste vide...

    Je suis en version 2.0 de la library common-net.
    J'ai testé en vain, la 2.1

    C'est un problème tellement gros que je ne comprends pas pourquoi je ne trouve pas plus d'indication sur le sujet...

    Une idée sur la façon de corriger / contourner ce problème ??

    Merci d'avance !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Aucune idée, mais traitement automatisé UNIX et espaces dans les noms de fichiers, ça fait pas bon ménage du tout et c'est très connu. Je pense que le problème est peu étudié parce que tout le monde l'évite comme la peste.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Bah ouais... moi aussi j'essaie de l'éviter.. un peu comme la peste

    Le problème c'est que mon client FTP est sous windows... va faire comprendre à l'utilisateur qu'il n'a pas le droit d'uploader des fichiers ou des répertoires avec des espaces....

    Et puis des clients telque FileZilla arrive très bien à gérer tout ca, c'est que ca doit être faisable

  4. #4
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Il est fort bien vrai que la nuit porte conseil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    	/**
             * Retourne la liste des fichiers présent dans un répertoire du ftp
             * <br />Permet également de récuperer les informations relative à un fichier
             * @param path le répertoire à parcourir
             * @return une liste de FTPFile
             * @throws IOException exception
             */
    	public FTPFile[] listeFTPFile(String path) throws IOException {
    		FTPFile[] ftpFiles = null;
    		// On s'assure que le client est correctement connecté
    		if (connection()) {
    			// On definit le mode de transfert des fichiers
    			ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
     
    			// On sauvegarde l'emplacement courant
    			String savePath = ftpClient.printWorkingDirectory();
     
    			// On se déplace dans le répertoire que l'on souhaite lister
    			if (ftpClient.changeWorkingDirectory(path)){
    				// On liste les fichiers présents dans le répertoire
    				ftpFiles = ftpClient.listFiles();
     
    			} else {
    				// Si le changement de répertoire n'a pas fonctionné
    				// Il est fort possible qu'il s'agisse du path d'un fichier
    				String fileName = retreiveFileName(path);
    				// On en déduit le nom du répertoire
    				String dirPath = path.substring(0, (path.length() - fileName.length() - 1));
    				// On se place dans le répertoire
    				if (ftpClient.changeWorkingDirectory(dirPath)) {
    					// On liste les fichiers présents dans le répertoire
    					ftpFiles = ftpClient.listFiles();
    					// On teste l'existence de fichier dans ce répertoire
    					if (ftpFiles.length >= 1) {
    						// On recherche notre fichier dans la liste des fichiers du répertoire
    						for (FTPFile ftpFile : ftpFiles) {
    							if (ftpFile.getName().equals(fileName)) {
    								ftpFiles = new FTPFile[1];
    								ftpFiles[0] = ftpFile;
    								break;
    							}
    						}
    					}	
    				} else {
    					// Rien n'a fonctionné, on le tente à l'ancienne
    					ftpFiles = ftpClient.listFiles(path);
     
    				}
     
    			}
     
    			// On se remet dans le répertoire de base
    			ftpClient.changeWorkingDirectory(savePath);
    		}
    		return ftpFiles;
    	}
     
    	/**
             * On recherche le nom du fichier dans le chemin
             * <br />Il faut s'assurer avant que le chemin ne contient que des "/" et pas des "\"
             * @param path un emplacement de fichier
             * @return le nom du fichier
             */
    	private String retreiveFileName(String path) {
    		String res = "";
    		// On décompose le chemin
    		String[] cutPath = path.split("/");
    		// On recupere le nom du fichier
    		res = cutPath[cutPath.length - 1];
     
    		return res;
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de exec() et répertoire avec espacement
    Par ultimaroms dans le forum Langage
    Réponses: 2
    Dernier message: 19/02/2012, 20h41
  2. Réponses: 5
    Dernier message: 22/08/2008, 00h46
  3. Réponses: 11
    Dernier message: 25/04/2006, 09h33
  4. Batch : copy d'un répertoire avec des espaces
    Par krfa1 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 26/10/2005, 12h47
  5. Réponses: 2
    Dernier message: 08/07/2005, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo