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 :

Comment récupérer les propriétés d'un fichier ?


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut Comment récupérer les propriétés d'un fichier ?
    Bonjour à tous,

    J'ai beaucoup de mal pour récupérer les propriétés d'un fichier. Je parles des propriétés présentes dans Windows (clic droit -> propriété -> résumé). Il y a plusieurs champs comme auteur, mots clefs etc.

    Mais je n'arrive pas à les lire

    Merci de votre aide

  2. #2
    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,


    Ces informations sont tiré du contenu du fichier lui même. Donc cela dépend du type de fichier, et c'est donc au cas par cas...

    Il n'y a pas d'API Java pour cela, et je doute même qu'il existe une API native...

    a++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Il s'agit d'un fichier excel.

    L'api POI ne le permet pas?

    Merci de ta réponse en tout cas

  4. #4
    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
    Je ne connais pas l'API POI pour répondre à cela... Mais ca doit être faisable.


    Toutefois si c'est le format XML d'Office 2007 (extension .xlsx), tu peux récupérer cela assez facilement. En effet ce format correspond en réalité à un fichier ZIP regroupant plusieurs fichiers XML.

    Il y a en particulier un répertoire "docProps" qui contient les XML décrivant les propriétés du fichier.

    Du coup c'est relativement simple à lire (exemple fait à la va-vite) :
    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
    	/**
             * Retourne une Map contenant toutes les propriétées du document Office
             */
    	public static Map<String,String> officeProps(File file) throws IOException {
    		Map<String,String> props = new HashMap<String, String>();
    		officeProps(file, "app", props);		
    		officeProps(file, "core", props);
    		return props;
    	}
     
    	/**
             * Lit un fichier XML de properties, et ajoute les éléments dans la Map
             */
    	private static void officeProps(File file, String xmlName, Map<String,String> props) throws IOException {		
    		try {
    			String uri = "jar:" + file.toURI() + "!/docProps/" + xmlName + ".xml";
     
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document doc = builder.parse(uri);
     
    			NodeList list = doc.getDocumentElement().getElementsByTagName("*");
     
    			final int len = list.getLength();
    			// il faudrait peut-être affiné cette partie : 
    			for (int i=0; i<len; i++) {
    				Node node = list.item(i);
    				String name = node.getNodeName();
    				String value = node.getTextContent();
    				props.put(name, value);
    			}
    		} catch (ParserConfigurationException e) {
    			throw new IOException("XML error", e);
    		} catch (SAXException e) {
    			throw new IOException("XML error", e);
    		}
    	}
    a++

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Merci beaucoup de ton aide

    Cependant moi il s'agit de format excel

  6. #6
    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
    Pour Excel 2003 et inférieur il te reste la piste de l'API POI...


    a++

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Ouai c'est sûr quoi je me suis penché, mais sans trop de réussite pour l'instant

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 114
    Points
    114
    Par défaut
    salut ;

    essaye de voir avec PoiUtil.getDocumentSummaryInformation(org.apache.poi.poifs.filesystem.POIFSFileSystem poiFileSystem);

    voici le lien de la javaDoc

    http://aperture.sourceforge.net/doc/...l/PoiUtil.html


  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Merci beaucoup pour ton aide mais je n'arrive pas à accéder à cette méthode

  10. #10
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    As tu ajouté la librairie apache correspondante dans ton projet?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Oui j'ai importé org.apache.poi.poifs.filesystem.*

  12. #12
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    L'import compile?

    Pourquoi n'arrive tu pas alors à accéder à la classe?
    Est-tu sur de son nom, de ses paramètres?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Oui l'import compile... Mais je n'arrive pas à instancier un PoiUtil

  14. #14
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    C'est à dire? Comment essayes-tu de l'instancier?
    Quel est le message d'erreur retourné?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Je fais PoiUtil poi = new PoiUtil().

    Ils me mettent que cette classe n'existe pas.

  16. #16
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    As tu vérifier dans l'api concerné les détails concernant cette classe? (constructeur, manière de l'instancier, ...)

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    J'ai regardé oui

Discussions similaires

  1. Comment récupérer les propriétés d'un fichier en JS ?
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 08/10/2010, 13h37
  2. Réponses: 24
    Dernier message: 25/09/2007, 12h53
  3. Comment modifier les propriétés d'un fichier NTFS
    Par ChristopheG dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/12/2006, 19h40
  4. Récupérer les propriétés d'un fichier avec GtkFileChooser
    Par yodo21 dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 26/10/2006, 18h30
  5. Comment retrouver les propriétés d'un fichier ?
    Par JuanLopez1966 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 01/09/2004, 17h34

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