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

Applets Java Discussion :

[applet][URL][fichier] tester la présence d'un fichier


Sujet :

Applets Java

  1. #1
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 68
    Points : 72
    Points
    72
    Par défaut [applet][URL][fichier] tester la présence d'un fichier
    bonjour,
    je sais, vous êtes déjà prêt à me dire que c'est le sujet arci connu, j'ai qu'à regarder dnas la FAQ ou le moteur de recherche.
    J'ai fait et j'ai pas trouvé.

    En fait, pour éviter les problèmes de signatures d'applet, les problèmes de sercurité et d'accès denied, pour lire un fichier avec mon applet je fais comme ça :
    le fichier en question est un fichier texte contenant de slignes de données dont les champs sont séparés par un point virgule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    URL urlFichier = new URL( cheminFichier2 );                      
    InputStream connex = urlFichier.openStream();       	
    BufferedReader  data = new BufferedReader( (Reader) new InputStreamReader( (InputStream) new BufferedInputStream( connex ) ) );
    ligne = new String();                  
    while( (ligne = data.readLine()) != null ){
      st = new StringTokenizer( ligne, ";", true); 
      unTab[0]=st.nextToken();           	
      st.nextToken();
      unTab[1]=st.nextToken();
      st.nextToken();
      unTab[2]=st.nextToken();           	
    }
    Ca marche très bien.
    Mais, (ya forcément un mais), le fichier en question peut ne pas être présent et je n'ai aucun moyende le savoir. Evidamment, en cas d'absence, ça me génère une erreur.

    question : comment tester la présence du fichier avec ma "manière" de faire ?

    Merci.

  2. #2
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    une idée ?

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Tu as essayé en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Object content = urlFichier.getContent();
    if(content!=null){
      // je fais mon traitement
    }
    Je ne sais pas si çà marche mais on s'est jamais.

  4. #4
    Membre actif Avatar de snoop
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 354
    Points : 294
    Points
    294
    Par défaut
    Tu peux tester ton InputStream ainsi :
    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
     
    if (connex != null){
    BufferedReader  data = new BufferedReader( (Reader) new InputStreamReader( (InputStream) new BufferedInputStream( connex ) ) ); 
    ligne = new String();                  
    while( (ligne = data.readLine()) != null ){ 
      st = new StringTokenizer( ligne, ";", true); 
      unTab[0]=st.nextToken();               
      st.nextToken(); 
      unTab[1]=st.nextToken(); 
      st.nextToken(); 
      unTab[2]=st.nextToken();               
    } 
     
    }
    else {
     // traitement context == null
    }
    Snoop

  5. #5
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    j'ai essayé mais l'appklet plante à
    InputStream connex = urlFichier.openStream();
    Donc le
    connex==null ne marche pas.


    Quant à getContent() j'obtiens une erreur :
    java.net.UnknownServiceException: no content-type

    D'autres idées ?

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Eh bien tu peux faire un try catch sur ton getContentType().
    Sinon tu fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    URLConnection conn = urlFichier.openConnection();
    if(conn!=null){
     
       InputStream in = conn.getInputStream();
       if(in!=null){
         // ton traitement !
       }
     
    }

  7. #7
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    En fait, j'ai déjà le try catch mais j'aimerais que ça ne passe pas par là .
    (je me sers du catch pour choper les erreurs réellement plantatoires, le fait que le fichier ne soit pas présent n'empêche pas le fonctionnement de mon applet)

    J'ai essayé aussi le
    URLConnection conn = urlFichier.openConnection();

    Mais quand je teste conn==null j'obtiens toujours false, que kle fichier soit présent ou pas.

  8. #8
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Je vois mal comment il peut te retourner null.
    Car d'après la doc http://java.sun.com/j2se/1.3/docs/api/java/net/URL.html#openStream()

    La fonction openStream() utilises openConnection().getInputStream().
    Et çà si je ne m'abuse, çà donne une NullPointerException si jamais tu as raison.

    Peux tu montrer le code complet que l'on vérifie.

  9. #9
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    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
     
     
    import java.util.*;
    import java.net.URL;
    import java.io.*;
    import java.text.SimpleDateFormat;
    import java.net.URLConnection;
     
    public void recupData(){
                URL urlFichier;
                BufferedReader data;
                String ligne;
                String unToken;
                StringTokenizer st;
                InputStream connex;
                String refNews;
                String contentNews;
        try{
                //chargement des news           
                urlFichier = new URL( cheminFichier2 ); 
                URLConnection maConnexionURL=urlFichier.openConnection();
     System.out.println("mon fichier est null ? "+(maConnexionURL==null));                                
                	connex = urlFichier.openStream();       	
                	data = new BufferedReader( (Reader) new InputStreamReader( (InputStream) new BufferedInputStream( connex ) ) );
                	ligne = new String();                  
                	while( (ligne = data.readLine()) != null ){
    	            	st = new StringTokenizer( ligne, ";", true); 
        	        	String [] unTab=new String[3];
            	    	unTab[0]=st.nextToken();           	
                		st.nextToken();
                		unTab[1]=st.nextToken();
                		st.nextToken();
                		unTab[2]=st.nextToken();           	
                		colonneNews.addElement(unTab);
                	}
        	}catch(Exception e){
          		System.out.println("ERR >> dataBall.recupAllData : "+e);
        	}
    }
    En sortie quand le fichier n'est pas présent :
    mon fichier est null ? false
    ERR >> dataBall.recupAllData : java.io.FileNotFoundException: sam-gaia:8081//extranet/laboApplet/vliq/langue1/ADAG_EURA_C.TXT
    En sortie quand le fichier est présent :
    mon fichier est null ? false

  10. #10
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    hypothèse :
    le getConnection fonctionne car il ouvre une connexion, une "route" si je puis dire, même s'il tombe dans le vide.
    Par contre le getInputStream génère une erreur, car lui il a besoin que la route aboutisse.

    En fait, si je comprends bien, je suis presque obligé de faire une méthode spéciale test de fichier qui me renvoie false/true.
    Avec un try catch je pourrais retourner false sans générer d'erreur dans la méthode qui l'utilise.

  11. #11
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Quand ton fichier est vide , qu'elle est l'erreur est la ligne ? Pour savoir où çà déconne bordel.
    Normalement ton URLConnection ne peut pas être null et te retourner un InputStream.

  12. #12
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    attention, ya deux possibilités :
    le fichier existe (présent sur le serveur) ou le fichier n'existe pas (pas présent sur le serveur)

    Quand le fichier n'existe pas :
    L'erreur se situe là :
    connex = urlFichier.openStream();

    l'erreur est :
    java.io.FileNotFoundException: sam-gaia:8081//extranet/laboApplet/vliq/langue1/ADAG_EURA_C.TXT

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

Discussions similaires

  1. Tester la présence d'un fichier dans un repertoire
    Par Erwan1978 dans le forum Administration
    Réponses: 2
    Dernier message: 28/08/2009, 11h07
  2. Tester la présence d'un fichier source
    Par gc243 dans le forum Informatica
    Réponses: 1
    Dernier message: 04/06/2009, 10h24
  3. Réponses: 5
    Dernier message: 15/07/2008, 15h10
  4. Réponses: 0
    Dernier message: 18/01/2008, 11h48
  5. Réponses: 4
    Dernier message: 27/04/2006, 17h51

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