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

avec Java Discussion :

Appliquer une méthode au resultat d'une fonction


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Points : 52
    Points
    52
    Par défaut Appliquer une méthode au resultat d'une fonction
    Bonjour,
    Je m'explique car le titre du post n'est pas très clair...
    J'ai une classe qui cherche le nombre de fichier qu'il y a dans le chemin écrit dans une zone de texte. Et je cherche à lire ses fichiers avec une autre classe qui lit les fichiers.
    Le soucis est que je n'arrive pas à appliquer la méthode qui lit les fichiers au résultat de l'autre méthode qui retourne une liste de fichiers.

    Voici le code que j'ai mis en place pour le moment et qui verifie que le contenue de la liste n'est pas 0.

    Classe Viewpart dans laquel je veux que mes fichier soit lut au clique du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int nb = configure.Searchfile.listeRepertoire(f).size();
    		    	  if ( nb != 0){
    		    		  //Faire quelque chose...
    		    	  }else {
    		    		  System.err.println("Il n'y a aucun fichier de se nom ! ");
    		    	  }
    Ma classe Readfile1 lit les fichiers
    Ma classs SearchFile cherche a l'aide de la recursivité les fichier qui porte un certain nom dans le chemin qu'on lui donne et renvoie une liste de fichier
    SearchFile retourne c qui est une List et je veux appliquer mon ReadFile1 a mon SearchFile.

    Merci !

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, le problème est que tu ne stockes pas la liste de fichiers. Ensuite pour parcourir, le for est plus adapté. Tu devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    List<File> listeFichiers = configure.Searchfile.listeRepertoire(f);
    for(File fichier : _listeFichiers) {
        Readfile1.read(fichier);
    }
    Il y a plusieurs méthodes pour parcourir une liste, j'ai utilisé la boucle for étendue disponible depuis java 5.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Points : 52
    Points
    52
    Par défaut
    Ah oui exacte maintenant que je le voi ecrit cela m'inspire....
    Par contre ma Classe ReadFile convertie mes fichiers XML en String :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static String chemin="";
    	
    	public static String  Readfilefich(File repertoire) throws IOException {
    		FileInputStream  monFichier = new FileInputStream(chemin);
    		String content = IOUtils.toString(monFichier);
    		return content;	 
    	  
    	}
    Et je voudrais etre sur que mes fichier sont convertie on les ouvrant.
    Le soucis c'est que uand je lance mon appli d'une il m'ecrit 3 fois le nom du même fichier qu'il a trouvé dans le chemin et ensuite il me met plein d'erreur
    Une dans mon ReadFile (en rouge) et une dans ma classe ViewPart1 (en rouge egalement)

    Voici mon bouton dans ViewPart1 :
    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
    btn1.addSelectionListener(new SelectionAdapter(){
    
    			@Override
    			public void widgetSelected(SelectionEvent event) {
    		    	  
    		    	  configure.Searchfile.startpoint = txt1.getText();
    		    	  File f = new File(configure.Searchfile.startpoint);
    		    	  configure.Searchfile.listeRepertoire(f);
    		    	  int reponse = 0;
    	    	  
    		    	  configure.Readfile.chemin = txt1.getText();
    		    	  int nb = configure.Searchfile.listeRepertoire(f).size();
    		    	  
    		    	  if ( nb != 0){
    		    		 List<File> files = configure.Searchfile.listeRepertoire(f);
    		    		 for (File fi : files){
    		    			 try {
    							content = configure.Readfile.Readfilefich(fi);
    							
    							//bpm.dom4j.Parse(content);
    						} catch (IOException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    		    		 }
    		    	  }else {
    		    		  System.err.println("Il n'y a aucun fichier de se nom ! ");
    		    	  }
    		    	  
    		    	  System.out.println(content);
    		    	  int reponse1 = 0;
    
    		  		Dialogue inputDialog = new Dialogue(Display.getCurrent().getActiveShell());
    		    	  
    
    		    	  if (inputDialog.open() == inputDialog.OK) {
    		    		  //String chemin = configure.Searchfile.startpoint;
    					  
    					
    					System.out.println("Document analysé");
    		    	  } else {
    		    		  //System.out.println("Operation annulée");
    		    	  	}
    			}
    	      
    	    });

  4. #4
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Il faut que tu donnes les messages d'erreur, complets

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Points : 52
    Points
    52
    Par défaut
    En fait se sont des erreurs dans la console a l'execution.
    Il me met tous sa ... :
    J'ai mis les erreurs qui concerne mes pages en rouge !!!
    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
    74
    C:\Users\Tiphanie\dossier\resources\preferencesContext.xml
    C:\Users\Tiphanie\resources\preferencesContext.xml
    C:\Users\Tiphanie\dossier\resources\preferencesContext.xml
    C:\Users\Tiphanie\resources\preferencesContext.xml
    C:\Users\Tiphanie\dossier\resources\preferencesContext.xml
    C:\Users\Tiphanie\resources\preferencesContext.xml
    java.io.FileNotFoundException: C:\Users\Tiphanie\Desktop\Vanilla-TomCat\vanilla-tomcat-mysql-1.30-RC5\webapps (Accès refusé)
    	at java.io.FileInputStream.open(Native Method)
    	at java.io.FileInputStream.<init>(Unknown Source)
    	at java.io.FileInputStream.<init>(Unknown Source)
    	at configure.Readfile.Readfilefich(Readfile.java:15)
    	at bpm.configure.views.ViewPart1$1.widgetSelected(ViewPart1.java:99)
    	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
    	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
    	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
    	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
    	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    	at bpm.configure.Application.start(Application.java:20)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
    	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
    java.io.FileNotFoundException: C:\Users\Tiphanie\Desktop\Vanilla-TomCat\vanilla-tomcat-mysql-1.30-RC5\webapps (Accès refusé)
    	at java.io.FileInputStream.open(Native Method)
    	at java.io.FileInputStream.<init>(Unknown Source)
    	at java.io.FileInputStream.<init>(Unknown Source)
    	at configure.Readfile.Readfilefich(Readfile.java:15)
    	at bpm.configure.views.ViewPart1$1.widgetSelected(ViewPart1.java:99)
    	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
    	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
    	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
    	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
    	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    	at bpm.configure.Application.start(Application.java:20)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
    	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
    null
    parsing driver file in :/C:/Users/Tiphanie/Desktop/eclipse/eclipse3-3/\resources\driverjdbc.xml
    log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
    log4j:WARN Please initialize the log4j system properly.

  6. #6
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    L'erreur est plutôt explicite, le fichier C:\Users\Tiphanie\Desktop\Vanilla-TomCat\vanilla-tomcat-mysql-1.30-RC5\webapps n'est pas trouvé, apparemment l'accès est refusé.

    Est-ce que ta fonction qui liste les fichiers est correcte? j'ai l'impression qu'elle renvoi un répertoire.

    ps : tu appelles 2 fois listeRepertoire, c'est inutile de tester la longueur de la liste, si il n'y a pas d'éléments on ne rentrera pas dans la boucle fort.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Points : 52
    Points
    52
    Par défaut
    Normalement oui elle est correcte. Mais ce que je comprend pas c'est que si l'accès est refusé il devrait pas me lister les fichiers ?
    Voici quand même ma classe qui cherche les fichiers
    Quand j'ai lancé en debug (grâce au if) il m'indiquait que le nombre d'élément dans ma Liste était bien 2 donc cela doit fonctionner...
    SearchFile :
    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
    public class Searchfile { 
    	public static String startpoint = "";
     
    	public static List<File> listeRepertoire (File repertoire) {
    		List<File> c = new ArrayList<File>();
     
    	  String Nomfich = "preferencesContext.xml";
    	  if (repertoire.isDirectory()) {
    		  File[] list = repertoire.listFiles();
    	      if (list != null){
    	    	  for (int i = 0; i < list.length; i++) {
    	    		  if(list[i].isDirectory()){
    	    			  c.addAll(listeRepertoire(list[i]));
                      /*System.out.println(list[i].getAbsolutePath());
        			  c.add(l);*/
    	    		  }
     	    		  else if (list[i].isFile()) {
     	    			  if (list[i].getName().equals(Nomfich)){
     	    				 c.add(list[i]);
     	    				 System.out.println(list[i].getAbsolutePath());
     
     	    			  }
    	    			//System.out.println(list[i].getName());
     	    		  }
    	    	  } 
    	      } else {
    	    	  System.err.println(repertoire + " : Erreur de lecture.");
    	      }
    	  } 
    	  return c;
    	 } 
     
    }
    J'ai corrigé l'appel en double et le test : )
    Il m'affiche bien qu'une seule fois chaque fichier !!!

  8. #8
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Je te conseille de vérifier si le chemin du fichier est bon en ajoutant une trace, ou en debug.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println("Lecture du fichier : " + fi.getAbsolutePath());
    content = configure.Readfile.Readfilefich(fi);

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Points : 52
    Points
    52
    Par défaut
    Il m'affiche bien pour les deux fichiers le bon chemin :/ .............

  10. #10
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Est-ce qu'il y a des droits particuliers sur ces fichiers? si non, je ne vois pas...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Points : 52
    Points
    52
    Par défaut
    Non
    Bon merci pour ton aide je vais essayé de me débrouiller
    Bonne après midi

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Points : 52
    Points
    52
    Par défaut
    Donc j'ai fais un peu de debug et je crois qu'il de passe pas dans deux lignes de ma méthode Readfile :

    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
    public class Readfile {
    	public static String chemin="";
    		/**
                     * @param args
                     * @throws IOException 
                     */
    	public static String  Readfilefich(File repertoire) throws IOException {
    		FileInputStream  monFichier = new FileInputStream(chemin);
     
                    //ne passe pas dans les deux lignes a la suite...
    		String content = IOUtils.toString(monFichier);
    		return content;	 
     
    	}
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
     
    		String chemin = "";
    		File f = new File(chemin);
    		Readfilefich(f);
    	}
     
    }
    C'est pour sa que ma variable content renvoie null ...
    Mais après est ce que tu as une idée de pourquoi il ne passe pas dans ses deux lignes ?

  13. #13
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    C'est justement à cause de l'exception qui est levée par l'appel à new FileInputStream(chemin).

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/10/2012, 16h01
  2. Réponses: 0
    Dernier message: 24/05/2011, 11h05
  3. Utiliser une méthode non-static dans une méthode static
    Par mcfly37 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/08/2010, 11h41
  4. Réponses: 1
    Dernier message: 29/07/2010, 12h11
  5. mettre en cache le resultat d'une méthode
    Par austin P. dans le forum Spring
    Réponses: 3
    Dernier message: 03/03/2008, 17h06

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