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 :

Problème avec une fonction pour vérifier la présence d'un fichier ou dossier


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Problème avec une fonction pour vérifier la présence d'un fichier ou dossier
    Bonjour tout le monde,

    J'ai un problème avec une méthode.

    J'appelle une méthode pour checker si un dossier existe, si il existe, je retourne un simple true autrement false.

    J'obtiens ce message d'erreur :

    existeOuPas(java.lang.String)in Exercice1 cannot be applied to (java.io.File)
    Voici le code, vous pourriez svp regarder ce qu'il se passe ?

    Merci d'avance.

    beegees

    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
    import java.io.*;
    public class Exercice1 
    {
    	public static void main (String [] args)throws IOException
    	{
    		File fichier = new File ("c:\\somme.txt");
     
    		boolean check = existeOuPas(fichier);
     
    		if (check==true)
    		{
    			System.out.println(fichier.getName());
    			System.out.println(fichier.getPath());
    		}
    	}
     
    	public static boolean existeOuPas(String cheminDuFichier)
    	{
    		File Dossier = new File ("cheminDuFichier");
    		if (Dossier.exists())
    		return true;
    		else
    		return false;
    	}
    }

  2. #2
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Ta fonction demande un String et tu lui donne un File.

    Remplace le prototype par ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static boolean existeOuPas(File fichier)
    Et pour faire simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    File Dossier = new File ("cheminDuFichier");
    if (Dossier.exists())
    return true;
    else
    return false;
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return fichier.exists();
    Utilisez les balises "Code" (alt+c).
    Nous avons répondu à votre question? Pensez au tag

    Le "lol" est aux boulets ce que le ";" est aux programmeurs

  3. #3
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Alors, premièrement, tu déclares ta méthode existeOuPas comme static. Tu dois donc l'appeler en tant que telle, comme ça :
    Exercice1.existeOuPas("mon fichier");
    De plus, si cela ne fonctionne pas, c'est que tu déclares ta méthode avec un paramètre de type String, hors, ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File fichier = new File ("c:\\somme.txt");
     
    		boolean check = existeOuPas(fichier);
    Tu vois bien que fichier est de type File, d'où l'erreur. Tu dois faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File fichier = new File ("c:\\somme.txt");
     
    		boolean check = existeOuPas(fichier.getPath());
    La méthode getPath() de File retourne le chemin complet du fichier sur le disque dur dans un type String. Bon, je t'avoue que je ne comprend pas ton exercice, sachant qu'il existe déjà une méthode exists() dans File que tu utilises d'ailleurs dans ta méthode existeOuPas(String chemin). Mais si c'est un exercice...
    Tu peux simplifier aussi ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (Dossier.exists())
    		return true;
    		else
    		return false;
    Par ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return Dossier.exists();
    Car la méthode exists() retourne true ou false, comme ta méthode
    Bonne chance.

  4. #4
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut v4np13,

    Merci beaucoup pour ta réponse.

    C'est bien que ça m'est arrivé pendant les révisions et pas à l'examen.

    Je le savais en plus, je commence à me mélanger les pinceaux avec tous les exercices que je fais.

    Par contre pour le "truc" que tu me donne (pour le exists() ) ça c'est top, merci

    Encore un super grand merci et bonne fête du travail tu es le

    beegees

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut Janitrix,

    Merci pour ta réponse complète et efficace.

    à propos de ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exercice1.existeOuPas("mon fichier");
    J'ai toujours fait comme je le note ci-dessus et je n'ai jamais eu de problème, c'est d'ailleurs le prof qui nous l'a appris comme ça.

    Que veux dire exactement ce static ?

    Bizzarement, mon fichier n'est pas trouvé alors qu'il existe, c'est pas motivant d'avoir deux problème sur le premier exercice de révision, surtout que j'ai révisé hier toute la journée.

    Edit: Est-ce que vous pourriez vérifier si mon code fonctionne svp ?

    Merci encore à toi.

    beegees

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Ma méthode ne trouve pas le dossier sur mon DD alors que sans méthode ça fonctionne
    Bonjour tout le monde,

    J'ai une classe qui appelle une méthode et qui renvoi 2 si le fichier existe ou 1 si le fichier n'existe pas.

    Le fichier existe sur mon disque dur mais il renvoit toujours 1.

    J'ai refait la classe en testant directement, sans appel de méthode, et là ça fonctionne, pourriez-vous voire ce qu'il se passe svp ?

    Merci d'avance pour votre aide.

    beegees

    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
    import java.io.*;
    public class Exercice1 
    {
    	public static void main (String [] args)throws IOException
    	{
    		File fichier = new File("c:\\RSI");
     
    		int check = existeOuPas(fichier);
     
     
     
    		if (check==2)
    		{
    			System.out.println(fichier.getName());
    			System.out.println(fichier.getPath());
    		}
    		else
    		System.out.println("Fichier non trouve");
    		System.out.println(check);
    	}
     
    	public static int existeOuPas(File cheminDuFichier)
    	{
    		int renvoi;
    		File Dossier = new File ("cheminDuFichier");
    		if (Dossier.exists())
    		renvoi = 2;
    		else
    		renvoi = 1;
    		return renvoi;
    	}
    }

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re,

    J'ai trouvé mon erreur :

    Je déclarais une variable File dans la méthode, alors qu'il ne faut pas le faire.

    le nouveau code est celui-ci : (si vous avez des remarques, n'hésitez pas)

    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
    import java.io.*;
    public class Exercice1 
    {
    	public static void main (String [] args)throws IOException
    	{
    		File fichier = new File("c:\\RSI");
     
    		int check = existeOuPas(fichier);
     
     
     
    		if (check==2)
    		{
    			System.out.println(fichier.getName());
    			System.out.println(fichier.getPath());
    		}
    		else
    		System.out.println("Fichier non trouve");
    		System.out.println(check);
    	}
     
    	public static int existeOuPas(File cheminDuFichier)
    	{
    		int renvoi;
    		if (cheminDuFichier.exists())
    		renvoi = 2;
    		else
    		renvoi = 1;
    		return renvoi;
    	}
    }
    Merci pour tout.

    beegees

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public static int existeOuPas(File cheminDuFichier)
    	{
    		int renvoi;
    		File Dossier = new File ("cheminDuFichier");
    Tu utilises une chaine de caractère à la place de ton paramètre !!!
    Enlèves ces quotes en trop !!!!


    Par contre j'ai du mal à comprendre l'intérêt de tout cela ! Pourquoi ne pas utiliser la méthode exists() directement ????


    a++

  9. #9
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut adiGuba,

    Heureux d'avoir de tes nouvelles.

    Le problème n'était pas les "" mais plutôt que j'avais déclarer deux fois une variable File.

    Une fois dans la méthode main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File fichier = new File ("c:\\RSI");
    et une fois dans la méthode existeOuPas(String fichier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File Dossier = new File ("c:\\RSIS");
    Mais j'avoue que les "" n'étaient pas les bienvenues, je l'avais d'ailleur remarqué, je les avaient retiré et il me donnait une erreur de constructeur.

    Qu'en penses-tu ?

    Merci encore pour ton aide.

    beegees

  10. #10
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Tu voulais créer un File à partir d'un File... new File(String) et non new File(File).

    Autrement je suis d'accord avec adiGuba, tu cherches à réinventer la roue en utilisant ta fonction au lieu d'utiliser directement exists().
    Utilisez les balises "Code" (alt+c).
    Nous avons répondu à votre question? Pensez au tag

    Le "lol" est aux boulets ce que le ";" est aux programmeurs

  11. #11
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    je m'explique pourquoi je rend les choses plus difficiles qu'elles ne le sont :

    J'ai un examen fin mai, la matière :

    Le travail sur les fichiers ET les méthodes.

    Je crée donc des méthodes même si c'est moins rapide et moins efficace dans certains cas.

    C'est juste pour m'entraîner, envoyer des arguments à la méthode, renvoyer ou pas un résultat.

    C'est le seul moyen pour que ça rentre.

    Merci à vous deux.

    beegees

  12. #12
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    C'est normal qu'il n'y est pas de problème. Mais si tu es sous Eclipse, ou même que tu compiles en affichant les warnings, il va te dire que ta méthode est déclarer static alors que tu ne l'appelles pas en tant que tel. Explication : le mot clé static te permet d'utiliser une méthode sans avoir une instance de la classe de cette méthode. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class MyClass {
    public static void static_coucou() {
         System.out.println("Coucou depuis une méthode static");
    }
     
    public void non_static_coucou() {
       System.out.println("Coucou depuis une méthode non static");
    }
    }
    A priori, rien de différent dans les méthode, à part l'utilisation de static dans la première. Mais quand je vais devoir appeler ces méthode, il y a une différence importante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyClass.static_coucou();
    //Fonctionne et affiche le message
    MyClass.non_static_coucou();
    //Ne fonctionne pas erreur à la compilation car non static
    En fait, la deuxième méthode n'est pas static, elle a donc besoin d'être appelée à partir d'une instance de la classe MyClass, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyClass myClass = new MyClass();
    myClass.non_static_coucou();
    //Fonctionne et affiche le message
    Tu vois la différence ? Alors quand tu déclares une méthode static, appelle la en tant que static, sinon il n'y a plus l'intéret d'une méthode static. Mais pour des explications plus clair, regarde une tutoriel sur Java sur dvp, il y en a beaucoup sur les bases qui explique l'utilisation de static. Bonne chance.

  13. #13
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re Janitrix,

    Je n'ai pas bien saisi la différence mais ce n'est pas grave, j'ai un tas de livre sur JAVA, je vais aller vérifier.

    Par contre, qu'entends-tu par "dvp" ?

    Merci encore pour ton aide.

    beegees

  14. #14
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    developpez.com bien sur . Bonne chance.

  15. #15
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    ok merci Janintrix, je peux mettre un résolu maintenant

    Merci encore pour ton aide.

    beegees

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/09/2014, 22h52
  2. problème avec une fonction javaScript
    Par volthur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2006, 18h04
  3. Problème avec une fonction utilisateur !
    Par nalou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/04/2006, 17h06
  4. Problème avec une fonction et un array
    Par Neal Morse dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/08/2005, 12h04
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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