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

Java Discussion :

Fichiers en Java [Sources]


Sujet :

Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Fichiers en Java
    Bonjour!

    Je cherche à savoir comment faire pour connaitre l'extension (le format) d'un fichier en Java, est ce qu'il y une fonction qui le fait ou bien faut il le faire à la main.

    J'ai un autre petit souci! J'ai une fonction qui agit sur des répertoires, elle renvoie la liste des fichiers que contient le répertoire racine passé en paramètre..Cette fonction est récursive et j'ai pas su comment faire pour obtenir à la fin le nombre de fichiers dans ce dossier.

    Voici la fonction

    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
    public static ArrayList analyseRep ( String repertoire) throws IOException {
     
            File repCourant = new File(repertoire);
            ArrayList listeFinaleFichier = new ArrayList();
     
            if (! repCourant.exists()){
            	System.out.println("Erreur Dossier inexsitant");
            	System.exit(0);
            }	
            else 
            	if ( repCourant.exists() && ! repCourant.isDirectory() )
            		return null;
     
            String[] listeFichier = repCourant.list();
            for (int i=0; i<listeFichier.length; i++ ){
                Object temp = analyseRep ( repertoire + File.separator + listeFichier[i]);
                if ( temp == null ) {
                    // --- Ajout du chemin au fichier courant
                	listeFinaleFichier.add(repertoire + File.separator + listeFichier[i]);
                	//System.out.println(repertoire + File.separator + listeFichier[i]);
     
                }
            }
            return listeFinaleFichier;
     
    }

    Merci d'avance

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Ce que tu peux faire c'est regarder combien il y a d'élements dans ta liste. Genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ArrayList liste=LaClasse.analyseRep (".") ;
    System.out.println(liste.size());
    Après pour l'extension ce que je fais c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String extension=url_image.substring(nom_fichier.lastIndexOf("."),nom_fichier.length());
    mais il y a peut être mieux

  3. #3
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Allé cadeau :
    - extension d'un File
    - extension d'un filename
    - icone système correspondant à l'extension
    - description système correspondant à l'extension

    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
    75
    76
    77
    78
    	/**
             * Returns the extension of the given file.
             * 
             * @param file
             * @return the extension
             */
    	public static String getExtension(File file) {
    		return getExtension(file.getName());
    	}
     
    	/**
             * Returns the extension of the given filename.
             * 
             * @param filename
             * @return the extension
             */
    	public static String getExtension(String filename) {
    		int index = filename.lastIndexOf('.');
    		return index == -1 ? "" : filename.substring(index + 1).toLowerCase();
    	}
     
    	/**
             * Returns the file system icon for given file extension (<code>fileExt</code>).
             * 
             * @param fileExt The file extension.
             * @return The icon corresponding to extension.
             */
    	public static Icon getIconForExtension(String fileExt) {
    		if (s_fileTypeIcons.get(fileExt) != null) {
    			return s_fileTypeIcons.get(fileExt);
    		}
    		File file = null;
    		Icon icon = null;
    		try {
    			// Create a temporary file with the specified extension
    			file = File.createTempFile("icon", "." + fileExt);
     
    			// Get file system view
    			FileSystemView view = FileSystemView.getFileSystemView();
    			icon = view.getSystemIcon(file);
     
    			// Delete the temporary file
    			delete(file, 0);
    		} catch (IOException ioe) {
    			s_logger.error(ioe.getMessage(), ioe);
    		}
    		s_fileTypeIcons.put(fileExt, icon);
    		return icon;
    	}
     
    	/**
             * Returns the file system description for given file extension (<code>fileExt</code>).
             * 
             * @param fileExt The file extension.
             * @return The description corresponding to extension.
             */
    	public static String getFileTypeDescription(String fileExt) {
    		if (s_fileTypeDescs.get(fileExt) != null) {
    			return s_fileTypeDescs.get(fileExt);
    		}
    		File file = null;
    		String desc = null;
    		try {
    			// Create a temporary file with the specified extension
    			file = File.createTempFile("desc", "." + fileExt);
     
    			// Get file system view
    			FileSystemView view = FileSystemView.getFileSystemView();
    			desc = view.getSystemTypeDescription(file);
     
    			// Delete the temporary file
    			delete(file, 0);
    		} catch (IOException ioe) {
    			s_logger.error(ioe.getMessage(), ioe);
    		}
    		s_fileTypeDescs.put(fileExt, desc);
    		return desc;
    	}
    NB : s_fileTypeIcons et s_fileTypeDescs sont un système de cache dans mon appli. Pas obligé de l'utiliser.


    Sinon guigui5931, pour l'extension ton code plantera pour les fichiers qui sont sans extension.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Merci à vous..

    Pour ce qui est du nombre de fichiers dans le repertoire j'ai essayé la fonction Liste.size(); Mais comme je l'ai dit avant, la fonction est récurissive et et cette valeur correspond uniquement au dernier repertoire parcouru par la fonction car elle est écrasée à chaque fois qu'elle parcoure un dossier...La liste ne contient que les fichiers d'un repertoire donné à un moment donné de la recursivité..

    Je sais que c'est un truc tout bête mais j'y arrive pas


    Merci encore à vous 2

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Tu crées avant ta boucle une variable de comptage initialisée à 0, que tu incrémentes à chaque passage dans la boucle

    A la fin, elle devrait contenir ce que tu veux (à savoir le nombre total de fichiers)

    Si tu veux en plus la liste de ces fichiers, c'est le même principe à ceci prêt que c'est une liste ("java.util.List") que tu initialises avant ta boucle et que tu remplis à chaque passage dans la boucle.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Oui j'avais fait ça et ça marchait mais quand je veux récupérer le nombre de fichiers en dehors de la fonction, par exemple en la passant dans les paramètres, ça fonctionnes plus

  7. #7
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Je ne comprends pas très bien ce que tu entends par "récupérer en dehors de la fonction".

    Il te suffit d'écrire une méthode qui renvoie le nombre de fichiers. Le retour de ta fonction est utilisable ailleurs dans ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public int getNombreDeFichiers(String repertoire) {
       int resultat = 0;
       // ton calcul recursif mettant à jour resultat
       return resultat;
    }

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Merci pour votre aide précieuse!

    Voilà j'ai donc utilisé la fonction suivante mais je n'arrive toujours pas à récupérer le nombre d'élements de ma liste finale des fichiers.
    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
    public static ArrayList analyseRep ( String repertoire) throws IOException {
     
            File repCourant = new File(repertoire);
            ArrayList listeFinaleFichier = new ArrayList();
            if (! repCourant.exists()){
            	System.out.println("Erreur Dossier inexsitant");
            	System.exit(0);
            }	
            else 
            	if ( repCourant.exists() && ! repCourant.isDirectory() )
            		return null;
     
            String[] listeFichier = repCourant.list();
     
            for (int i=0; i<listeFichier.length; i++ ){
                Object temp = analyseRep ( repertoire + File.separator + listeFichier[i]);
                if ( temp == null ) {
     
                    // --- Ajout du chemin au fichier courant
                	listeFinaleFichier.add(repertoire + File.separator + listeFichier[i]);
                	System.out.println(repertoire + File.separator + listeFichier[i]);
     
                /*else {
                    	listeFinaleFichier.add(temp);
                    	System.out.println(repertoire + File.separator + listeFichier[i]);
                 */
                }
            }
     
            return listeFinaleFichier;
    }
    Quand je déclare une variable que j'incrémente dans la boucle, elle me renvoie toujours 0..Pareil quand je la passe dans les paramètres de la fonction, c'est pour ça que j'ai dit qu'elle est remise à 0 à chaque appel récursif de la fonction.
    Je voulais savoir aussi comment faire pour que le nom du répertoire passé en paramètres, soit un répertoire sur le réseau

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList Al= analyseRep("\\Pa-inf-04\\Disk_C\\dell\\drivers");
    comment faire SVP.Merci

  9. #9
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Erreur d'inattention.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList Al= analyseRep("\\\\Pa-inf-04\\Disk_C\\dell\\drivers");

Discussions similaires

  1. Changer les droits d'un fichier en java multiplateforme
    Par titoun256 dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2009, 18h59
  2. Fichier en Java: Détécter la modification
    Par tricha amine dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 11/10/2006, 10h10
  3. Télécharger fichier en java
    Par Belegkarnil dans le forum Langage
    Réponses: 2
    Dernier message: 29/08/2006, 07h53
  4. fichier DriversManager .java
    Par Clarissa2006 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/06/2006, 10h47
  5. [Imprimer] Imprimer un fichier avec Java
    Par gwendo dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 13/11/2004, 20h23

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