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

C++ Discussion :

connaître l'adresse absolu d'un fichier


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut connaître l'adresse absolu d'un fichier
    Bonjour,

    J'utilise les objets std::ifstream pour manipuler des fichiers sous Linux, je voudrais connaître l'adresse absolu de mon fichier pour la transmettre à un autre programme. Il ne me semble pas qu'un objet std::ifstream dispose d'une méthode comme getAbsoluteFile pour les objets File en Java.
    Comment puis-je faire pour obtenir cette adresse ?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Que veux-tu dire par "adresse absolue" ?

    Son chemin complet depuis la racine? En effet, rien de standard ne permet de l'obtenir. D'ailleurs, certains n'ont même pas de chemin, comme les ostringstream...

    Même si tu obtenais son descripteur sous POSIX, fstat() ne donne pas le nom du fichier (sans compter qu'un fichier peut avoir plusieurs nom, à cause des liens "hard").
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Oui je parlais des chemins complets depuis la racine.

    Si cette adresse n'a pas de sens lors des manipulations de fichiers, pourquoi est-ce possible dans Java de l'obtenir facilement ?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Sans doute parce que Java la mémorise lors de l'ouverture.

    PS: Comment fait-on en Java?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    En java on procède comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                    //déclaration du fichier (il n'existe pas)
    		File monFichier =  new File ("nomFichier");
     
    		//création du fichier à la racine du projet
    		monFichier.createNewFile();
    		//affichage de l'adresse absolue
    		System.out.println(monFichier.getAbsolutePath());
    Il est vrai que l'on connaît implicitement le chemin dans ce cas (si nous avions voulu le créer ailleur, cela aurait été possible en mettant le chemin correspondant dans le constructeur : "chemin/nomFichier").

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 611
    Points
    30 611
    Par défaut
    Salut,

    Sauf erreur, tu devrais sans doute te baser sur les variables d'environnement et les fonctions permettant d'y accéder (pwd sous linux ou la variable %CD% sous windows pour obtenir le répertoire courent).

    Pour quelque chose de portable, peut-être devrais tu te tourner vers boost.filesystem, qui fournit pas mal de features intéressantes
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    java.io.File n'est pas l'équivalent de std::fstream (et n'a, en fait, aucun équivalent en C++).

    Bonne chance, même en Java, pour obtenir le nom du fichier (ou le File) à partir d'un FileInputStream/FileOutputStream/RandomAccessFile...


    Par contre, si tu veux juste obtenir le chemin complet d'un fichier à partir de son nom, le mieux est d'utiliser getcwd() pour obtenir le répertoire courant, et concaténer (plus un traitement supplémentaire s'il y a des ".." dans le chemin relatif; c'est de ce côté qu'on voit la pauvreté de la bibliothèque standard C++ quant au "sucre"...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Ok, merci à vous deux, la proposition de koala01 d'utiliser file system de la bibliothèque boost convient à ce que je veux faire. Résolu !

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

Discussions similaires

  1. Accès à un fichier avec une adresse absolue
    Par hmiezin dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2007, 00h25
  2. [Routeur WIFI ADSL] Connaître l'adresse IP de cfg usine ?
    Par phplive dans le forum Développement
    Réponses: 3
    Dernier message: 03/10/2005, 22h42
  3. Connaître son adresse IP Internet
    Par ADIDASman dans le forum Entrée/Sortie
    Réponses: 16
    Dernier message: 28/06/2005, 10h42
  4. [langage] chemin absolu d un fichier
    Par nono1782 dans le forum Langage
    Réponses: 4
    Dernier message: 20/07/2004, 15h02
  5. Réponses: 5
    Dernier message: 15/04/2004, 14h24

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