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

Langage Java Discussion :

Erreur "Cannot instantiate the type FtpClient ftp"


Sujet :

Langage Java

  1. #21
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    Bonjour,
    et voilà j'obtiens la liste des fichiers, j'ai juste rajouter :
    ftpClient.enterLocalPassiveMode();
    et ça marche, merci beaucoup de votre aide,
    j'ai encore besoin d'aide sur comment change t-on l'affichage de ces fichiers, j'explique un peu:
    par exemple, j'ouvre un de ces fichiers et l'affichage est comme celui ci:
    22 15:23:08 1170 1129 12/22 15:24:08 1270 5472 12/22 15:24:08 1270 5472 12/22 15:24:08 1270 5472.....
    alors que moi, j'ai besoin que ça soit séparé par des tabulations et à la ligne; comme:
    22 15:23:08 1170 1129
    serait-il possible de faire la transformation avec java? moi je n'ai aucune idée que d'ouvrir le fichier txt dans un fichier excel puis réenregistrer après;

    Meilleures salutations,

  2. #22
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu veux dire que les retours à la ligne que tu obtiens ne sont pas ceux qui étaient dans le fichier à l'origine? C'est probablement parce que le transfert ftp s'est fait en mode texte et non pas en mode binaire. Le serveur et le client adaptent alors automatiquement les retours à la ligne pour qu'ils correspondent à l'OS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client.setFileType(FTP.BINARY_FILE_TYPE);

  3. #23
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    mrci tchize_, et comment ferais- je alors pour lire les fichiers, la liste des fichiers dans ftp s'affiche actuellement sur le console, puis avec ftpClient.setFileType(FTP.BINARY_FILE_TYPE); comment je fais pour voir le résultat?
    je crois qu'il faut ouvrir et lire le fichier, mais je ne sais pas comment le faire à partir de ce que j'ai en ce moment.
    je vois là qu'il y a READ_PERMISSION mais aucune idée sur comment l'utiliser.

    auriez vous une idée pour ça?
    merci

  4. #24
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ha je n'avais pas compris que c'était le listing qui te posait problème.

    Si le listing s'affiche mal, montre nous au final le code que tu utilise pour afficher ce listing, qu'on le corrige.

  5. #25
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    ok, voilà mon code:

    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
    .....
     
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
     for(FTPFile file : files){
    			   String details = file.getName();
     
    			   System.out.println(details+"\t\t"+file.getSize());
     
    				InputStream stream = ftpClient.retrieveFileStream(details);
    				FileReader fichier = new FileReader(details);
    				reader = new BufferedReader(fichier);
    				//FileOutputStream outputStream = new FileOutputStream(savePath) ;
     
     
    		   }
     }  
     
    	  } catch (SocketException e) {  
    	   e.printStackTrace();  
    	  } catch (IOException e) {  
    	   e.printStackTrace();  
    	  } finally {  
    	   try {  
    	    ftpClient.disconnect();  
    	   } catch (IOException e) {  
    	    e.printStackTrace();  
    	   }  
    	  }
    }
     
    public static void LirefichierFTP(String filename){
    	try{
    		Runtime.getRuntime().exec(filename);
    	}catch (Exception e)
        {
    System.out.println(e);
    }
    }
    j'aimerai donc voir le changement après avoir rajouter ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    et j'ai encore un autre pti souci, les fichiers obtenus sont .txt, donc si je comprend très bien c'est déjà en binaire non?

  6. #26
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ce n'est pas clair pour moi. C'est le listing des fichiers que tu affiche par System.out.println(details+"\t\t"+file.getSize()); ou c'est le contenu des fichiers qui te pose problème? Aussi, tu fais quoi là avec ton BufferedReader dans ton code? Tu te content de l'ouvrir sans jamais le lire.

  7. #27
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    oui c'est le listing que je fais avec System.out.println(details+"\t\t"+file.getSize()). C'est l'ouverture du fichier qui me pose problème, j'ai réussi à lister tous fichiers dans ftp mais j'ai un problème sur comment je vais lire le contenu C'est pourquoi j'utilise Bufferedreader.

  8. #28
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ok, et tu pourrais décrire quel est ton problème de lecture du fichier?

  9. #29
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    mon problème maintenant c'est que j'aimerais lire le contenu du fichier. J'aimerais faire une lecture sans avoir télécharger le fichier, j'ai alors essayé comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ......
     for(FTPFile file : files){
    				   //String details = file.getName();
    				   InputStream stream =  ftpClient.retrieveFileStream(file.getName());
    				   reader = new BufferedReader(new InputStreamReader(stream,  "UTF-8"));
    				   firsline = reader.readLine();
    				   System.out.println("firsline en  "+firsline);
    .....
    qui lit la première ligne seulement:
    226 Directory send OK.
    PASV
    227 Entering Passive Mode (41,188,9,145,100,248)
    RETR SOPH Outgoing AMBASSADE DE LYBIE AMPANDRANA OUES201412221600.txt
    150 Opening BINARY mode data connection for SOPH Outgoing AMBASSADE DE LYBIE AMPA OUES201412221600.txt (33413 bytes).
    firsline en Chart Title: BP AMBASSADE DE LYBIE AMPA OUEST FO
    PWD
    j'aimerai donc faire une lecture de toutes les lignes du fichier et je ne sais pas encore comment je vais le faire;
    après j'aimerai créer un champ de recherche (searchbox) à partir de ce liste de fichiers dans ftp je ne sais pas c'est possible ou pas
    aviez vous une idée pour ça?

    Merci

  10. #30
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par kawaiyush Voir le message


    j'aimerai donc faire une lecture de toutes les lignes du fichier et je ne sais pas encore comment je vais le faire;
    Il suffit de boucler sur readLine() jusqu'à ce que cela te renvoie null
    Citation Envoyé par kawaiyush Voir le message
    après j'aimerai créer un champ de recherche (searchbox) à partir de ce liste de fichiers dans ftp je ne sais pas c'est possible ou pas
    Possible oui, il suffit que tu mémorise dans une champ la liste des fichiers que tu as récupérer. Comment, ça dépend en quoi est fait ton application

  11. #31
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    merci, ok
    j'ai utilisé le boucle while et j'ai maintenant la liste des contenus du fichier : lecture fichier réussie.
    il faut maintenant que je crée un searchbox ou champ de recherche, comme ça, j'entre un nom de fichier ou juste une partie du nom du fichier (sorte d'autocompletion à partir fichiers dans ftp) puis je fais une comparaison entre le nom saisi et les noms de fichiers dans ftp, si les noms sont égaux, on fait la lecture de fichier.
    c'est pourquoi je vous ai demandé si c'est possible ou pas,

    Possible oui, il suffit que tu mémorise dans une champ la liste des fichiers que tu as récupérer. Comment, ça dépend en quoi est fait ton application
    Je ne comprend pas très bien de quel champ vous parlez là?
    devrai-je alors mémorise la liste que j'obtient à partir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTPFile[] files = ftpClient.listFiles();
    dans un champ? et quel champ.
    Je m'excuse vraiment parce que je ne comprend pas alors je pose toujours des questions.

    mes meilleures salutations,

  12. #32
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par kawaiyush Voir le message
    merci, ok
    j'ai utilisé le boucle while :
    j'ai dit de boucler sur le readLine, là tu boucle sur reader. Tu dois bien te rendre compte qu'à aucun moment dans ton code reader ne peut devenir null....

    En plus ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (reader == null) try { reader.close(); }
    déclenchera d'office un NullPointerException puisque tu n'essaie de fermer que si reader est null
    devrai-je alors mémorise la liste que j'obtient à partir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTPFile[] files = ftpClient.listFiles();
    dans un champ?
    Oui, c'est l'idée, stocker ça quelque part

    Ben ça c'est à toi de voir, c'est ton application, ton design, tes besoins.

  13. #33
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    ah d'accord, merci beaucoup,
    le boucle marche, je suis maintenant sur la création de champ de recherche:
    merci, ok
    j'ai utilisé le boucle while et j'ai maintenant la liste des contenus du fichier : lecture fichier réussie.
    il faut maintenant que je crée un searchbox ou champ de recherche, comme ça, j'entre un nom de fichier ou juste une partie du nom du fichier (sorte d'autocompletion à partir fichiers dans ftp) puis je fais une comparaison entre le nom saisi et les noms de fichiers dans ftp, si les noms sont égaux, on fait la lecture de fichier.
    c'est pourquoi je vous ai demandé si c'est possible ou pas,
    encore merci

  14. #34
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    juste une dernière question,
    vous m'aviez dit de faire une liste et stocker les fichiers dans ftp dedans, mon pti souci c'est que il y a beaucoup de fichier alors si je télécharge tout ces fichiers, je crois que mon appli risquerait de planter.
    J'aimerai vous demander si c'est faisable d'appeler ces fichiers un par un sans l'avoir téléchargé. C'est à dire, faire un champ de recherche ou autocompletion, par exemple je saisi "xoxo" dans le champ, je compare xoxo à la liste des fichiers dans ftp, si ils sont égaux, on clique sur un bouton ok et j'utilise ce fichier "xoxo" pour les autres traitements, et ainsi de suite,

    quelqu'un pourrait- il me guider un peu svp parce que je me suis plantée là, je recherche sur le net mais rien, je ne trouve pas de solution
    merci

  15. #35
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je ne t'ai jamais dit de télécharger tous tes fichier FTP.

  16. #36
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut String index out of range: -1
    d'accord, j'ai pas téléchargé les fichiers, j'ai juste fais une lecture avec readline, et j'ai bien réussi à voir dans mon console le contenu du fichier, j'ai essayé avec
    filelist.get(1)
    . mais là j'aimerai découper cette contenu pour avoir un élément.

    Je crois savoir que le problème vient de indexof avec fichier dans ftp,
    quand je n'utilise pas indexof,
    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
    try {
    			ret = new Vector<String>();
    			 InputStream stream =  ftpClient.retrieveFileStream(sourceFile);
    			fluxEntree = new BufferedReader(new InputStreamReader(stream,  "UTF-8"));
     
    			//String inputline = new String("");
    			String inputline = null;
     
    			while ((inputline = fluxEntree.readLine()) != null) {
    //				indiceSeparateur = inputline.indexOf("\t", 9);
    //				int indicelast = inputline.lastIndexOf("\t");
    //				temp = new String(inputline.substring(indiceSeparateur + 1,
    //						indicelast));
    //				
    //				ret.add(temp);
    				System.out.println("temp 1DAB >> "+inputline);
    				iterator ++;
     
    			}
     
    			fluxEntree.close();
    j'obtient :
    temp 1DAB >> 12/23 15:52:19 46856 308681
    temp 1DAB >> 12/23 15:53:19 29852 148160
    temp 1DAB >> 12/23 15:54:19 63253 332386
    mais quand je décommentes indexof:
    try {
    ret = new Vector<String>();
    InputStream stream = ftpClient.retrieveFileStream(sourceFile);
    fluxEntree = new BufferedReader(new InputStreamReader(stream, "UTF-8"));

    //String inputline = new String("");
    String inputline = null;

    while ((inputline = fluxEntree.readLine()) != null) {
    indiceSeparateur = inputline.indexOf("\t", 9);
    int indicelast = inputline.lastIndexOf("\t");
    temp = new String(inputline.substring(indiceSeparateur + 1,
    indicelast));

    ret.add(temp);
    System.out.println("temp 1DAB >> "+temp );
    iterator ++;

    }

    fluxEntree.close();[/CODE]
    l'erreur suivante apparait:
    org.apache.jasper.JasperException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    cause mère

    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    java.lang.String.substring(Unknown Source)
    com.telma.reporting.debit.Utilftpfile.getExtractDebits(Utilftpfile.java:113)
    org.apache.jsp.Newjsp_jsp._jspService(Newjsp_jsp.java:90)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    j'aimerais savoir comment découper :
    temp 1DAB >> 12/23 15:52:19 46856 308681
    temp 1DAB >> 12/23 15:53:19 29852 148160
    temp 1DAB >> 12/23 15:54:19 63253 332386
    pour avoir la partie
    46856
    29852
    63253
    seulement, c'est pourquoi j'utilise indexof, est ce possible de l'utiliser pour découper fichier dans serveur ftp que je vois à distance à partir de FTPClient et FTPFile?
    j'ai vraiment besoin de votre aide svp, je ne sais plus comment le faire
    merci

  17. #37
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est bien d'utiliser indexOf, mais une fois que tu récupère une valeur avec, il faut encore que tu la teste. Pour le moment tu l'utilise aveuglément dans subString sans te poser la question si elle est valide ou pas. Ici, ça te retourne -1, ce qui signifie que sur la ligne concernée il n'y a pas de tabulation. A toi de déterminer ce que tu veux faire dans ce cas là.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/04/2015, 23h08
  2. Réponses: 7
    Dernier message: 01/03/2013, 11h58
  3. [WS 2003] Erreur : windows cannot load the user's profile
    Par mysystm dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 16/07/2012, 13h35
  4. Erreur "method undefined for the type"
    Par armoirapizza dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 04/06/2011, 15h10
  5. The type org.eclipse.ui.part.EditorPart cannot be resolved
    Par *alexandre* dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 05/06/2007, 14h15

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