Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

informations sur les fichiers

40 réponses
Avatar
ricky
bonjour

je cherche desesperemet a ecrire un programme en c++ qui me donne pour
un fichier donné sa taille et sa date de modification...

y a t il un truc miracle dans la stl a ce sujet ???

merci

@+
ricky

10 réponses

1 2 3 4
Avatar
Jonathan Mcdougall
je cherche desesperemet a ecrire un programme en c++ qui me donne pour
un fichier donné sa taille et sa date de modification...


Pour la date de modif, tu auras besoin d'utiliser des fonctions propres
à ton os.

Pour la taille, il n`y a pas de fonction miracle. Tu peux ouvrir le
fichier et le lire byte par byte en les comptant, ça marche, mais
ce n'est pas très efficace. Tu peux aussi utilliser seekg()
et tellg(), mais ce n'est pas garanti (même si habituellement
ça fonctionne). Ou encore utiliser des fonctions propres
à ton os.

# include <fstream>

int main()
{
// note le ios_base::binary, c'est _nécessaire_
std::ifstream ifs("file.ext", std::ios_base::binary);

ifs.seekg(0, std::ios_base::end);

std::ifstream::streamoff taille = ifs.tellg();
}


Jonathan

Avatar
Frédéri MIAILLE
"Jonathan Mcdougall" a écrit dans le message
de news:W0lfb.47014$
je cherche desesperemet a ecrire un programme en c++ qui me donne pour
un fichier donné sa taille et sa date de modification...


Pour la date de modif, tu auras besoin d'utiliser des fonctions propres
à ton os.

Pour la taille, il n`y a pas de fonction miracle. Tu peux ouvrir le
fichier et le lire byte par byte en les comptant, ça marche, mais
ce n'est pas très efficace. Tu peux aussi utilliser seekg()
et tellg(), mais ce n'est pas garanti (même si habituellement
ça fonctionne). Ou encore utiliser des fonctions propres
à ton os.

# include <fstream>

int main()
{
// note le ios_base::binary, c'est _nécessaire_
Pourquoi ? et pourquoi "ios_base" ?

Ca n'aurait pas un rapport avec le problème [H.S.] de compilation que j'ai
eu sous Linux avec G++[/HS] ou il me disait undeclared identifier 'ios' ?

std::ifstream ifs("file.ext", std::ios_base::binary);

ifs.seekg(0, std::ios_base::end);

std::ifstream::streamoff taille = ifs.tellg();
}


Jonathan





--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.graphisme.programmation
fr.comp.os.ms-windows.programmation


Avatar
Frédéri MIAILLE
"ricky" a écrit dans le message de
news:3f7dd983$0$20169$
bonjour

je cherche desesperemet a ecrire un programme en c++ qui me donne pour
un fichier donné sa taille et sa date de modification...
Date modification : spécifique OS. Un tour sur le site de référence

développeurs de la plate-forme et c'est réglé.

y a t il un truc miracle dans la stl a ce sujet ???
Le miracle ? : fstream et un tout petit poil de réflexion (indice :

seekg/seekp).
Mais c'est tout de même vers la page 20 de n'importe quel livre même dans la
bibliothèque rose de l'informatique ça !

http://www.developpez.com/

"Thinking in C++" Bruce Eckel :
http://www.codecuts.com/mainpage.asp?WebPageID15

--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.graphisme.programmation
fr.comp.os.ms-windows.programmation

Avatar
James Kanze
"Frédéri MIAILLE" writes:

|> "ricky" a écrit dans le message de
|> news:3f7dd983$0$20169$

|> > je cherche desesperemet a ecrire un programme en c++ qui me donne
|> > pour un fichier donné sa taille et sa date de modification...

|> Date modification : spécifique OS. Un tour sur le site de
|> référence développeurs de la plate-forme et c'est
|> réglé.

|> > y a t il un truc miracle dans la stl a ce sujet ???

|> Le miracle ? : fstream et un tout petit poil de réflexion (indice
|> : seekg/seekp).

Et comment est-ce que tu trouves la taille avec ses fonctions ? (Un
petit tuyau : elles ne travailles pas avec des types entiers.)

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Avatar
Samuel Krempp
le Saturday 04 October 2003 13:13, écrivit :

"Frédéri MIAILLE" writes:

|> "ricky" a écrit dans le message de
|> news:3f7dd983$0$20169$


où est le début du thread ? je n'ai accès qu'à ta réponse.

--
Sam

Avatar
ricky
hello

desole pour la reponse au milieu, mais je ne voiut pas tous les mesages
en ce moment :-(((

|> Le miracle ? : fstream et un tout petit poil de réflexion (indice
|> : seekg/seekp).


merci pour le poil de reflexion, mais outre que le seek ne me donne pas
d'information sur la date, je cherchais s'il y avais une facon autre que
de devoir ouvrir un fichier pour avoir l'information (oui je sais mettre
le pointeur a la fin)

finalement j'ai trouve la reponse aux deux avec stat, et dans la struct
reponse j'ai le mtime, a time ainsi que la taille fournie directement

j'en profite pour une nouvelle question : peut on avoir la liste des
fichiers d'un repertoire avec une fonctionalite de la stl ?

j'ai l'impression que, come pour le graphisme, il existe assez peu de
truc normalise pour gerer une arborescence .. peut etre je me trompe ...
pourtant des progres enormes avaient ete faits sur les chaines et autres
trucs utiles !

je precise que ce sont surement des questions de debutant, mais il en
faut bien , vous vous ennuiyerez sans nous :-P

@+
ricky

Avatar
ricky
hello

le Saturday 04 October 2003 13:13, écrivit :


"Frédéri MIAILLE" writes:

|> "ricky" a écrit dans le message de
|> news:3f7dd983$0$20169$



où est le début du thread ? je n'ai accès qu'à ta réponse.



je n vois pas mon premeir message non plus qui etait le debut du thread !
je demandais juste si on pouvait avoir facilement la taille et la date
de modification d'un fichier avec un truc de la stl ..
pour la taille, il y a bien seek, mais j'ai prefere stat qui me donne ce
que je souhaite dans une structure ...
je chjerche aussi a pouvoir faire dl'equivalent de "ls/dir", ou autre en
evitant d etre trop hors norme

@+
ricky


Avatar
Frédéri MIAILLE
Et bien seekg()/seekp() peuvent placer le pointeur à la fin du fichier et on
peut utiliser tellg()/tellp() par la suite.
Ce n'est pas fiable ?

--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.graphisme.programmation
fr.comp.os.ms-windows.programmation

"James Kanze" a écrit dans le message de
news:
"Frédéri MIAILLE" writes:

|> "ricky" a écrit dans le message de
|> news:3f7dd983$0$20169$

|> > je cherche desesperemet a ecrire un programme en c++ qui me donne
|> > pour un fichier donné sa taille et sa date de modification...

|> Date modification : spécifique OS. Un tour sur le site de
|> référence développeurs de la plate-forme et c'est
|> réglé.

|> > y a t il un truc miracle dans la stl a ce sujet ???

|> Le miracle ? : fstream et un tout petit poil de réflexion (indice
|> : seekg/seekp).

Et comment est-ce que tu trouves la taille avec ses fonctions ? (Un
petit tuyau : elles ne travailles pas avec des types entiers.)

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93


Avatar
Frédéri MIAILLE
"ricky" a écrit dans le message de
news:3f7ee5fb$0$10421$
hello

desole pour la reponse au milieu, mais je ne voiut pas tous les mesages
en ce moment :-(((

|> Le miracle ? : fstream et un tout petit poil de réflexion (indice
|> : seekg/seekp).


merci pour le poil de reflexion,
Te fâche pas :)

Je dis ça parce que moi j'ai compris très tard, mais très très tard que je
pouvais utiliser fstream et ifstream/ofstream pour trouver la taille de mes
fichiers.

mais outre que le seek ne me donne pas
d'information sur la date, je cherchais s'il y avais une facon autre que
de devoir ouvrir un fichier pour avoir l'information (oui je sais mettre
le pointeur a la fin)
Tu as dit :

"je cherche desesperemet a ecrire un programme en c++ qui me donne pour
un fichier donné sa taille et sa date de modification...".
Tu n'avais pas donné de condition.
J'ai planifié avec ça.

finalement j'ai trouve la reponse aux deux avec stat, et dans la struct
reponse j'ai le mtime, a time ainsi que la taille fournie directement
Fais gaffe avec stat. 1, c'est HS ici 2 certaines versions avec 300

underscores imbriqués dans le nom de la fonction avec 290 appels à des
choses vachement *simples* à utiliser devant ne sont pas compatibles avec la
version 1.8763743.3874.3478DhjeghdeefgHJGJ7683468394/3498734 release
783646.5454.5878.3547 de Windows 95.
J'exagère à peine. D'ailleurs rien que d'y penser, ça m'énerve.
Je vais aller boire un coca moi, ça va me soulager...

j'en profite pour une nouvelle question : peut on avoir la liste des
fichiers d'un repertoire avec une fonctionalite de la stl ?
Je sais pas, c'est HS.

findfirst(), findnext() etc.
Mais là, James va revenir et m'engueuler parce que je répond à un truc HS.
Tu auras la réponse à coup sûr sur fr.comp.os.ms-windows.programmation


j'ai l'impression que, come pour le graphisme, il existe assez peu de
truc normalise pour gerer une arborescence .. peut etre je me trompe ...
Hein ?

En graphisme ? une arborescence ?
Normalisé ? Ah oui la normale est le vecteur perpendiculaire.

Tu veux dire, il existe peu de choses standard. C'est normal, il n'existe
rien de standard pour faire ça. Les langages ne sont pas prévus pour gérer
ça !
C'est vrai, un langage est fait pour fonctionner sur un processeur et voilà
bien tout. Alors ils n'ont pas prévus de support pour les disques durs ni
les cartes vidéos, ni les cartes réseaux. Tout ça, ce sont d'autres gens
comme ceux de chez Microsoft par exemple qui ont fait leurs petits trucs,
donc des choses, comme tu le dis : pas "très normalisée" qui sont spécifique
aux contextes. Donc une version pour Windows, une version pour Xwindow, une
version pour mac os, une pour BeOS, une version pour PALM et j'en passe des
millions. Et puis les updates (changement de Win95 à Win2000 par exemple
d'ou ma mise en garde avec stat) engendrent d'autres versions qui ne sont
plus compatibles avec d'autres trucs d'autres version différentes. C'est un
VERITABLE CAUCHEMARD !
Imagine une voiture que tu veux changer en char d'assaut Russe.
Ta voiture est prévue pour tracter 800 Kg de matos + 4 personnes et faire
500 km et rouler à 170 Km/h max.
Toi, tu vas rajouter une tourelle bi-canons de 27 tonnes + des chenilles +
une plaque de 20 cm d'épaisseur anti nucléaire sur tout sa surface pour un
poids total de 100 tonnes et un système de ciblage et et... un clignotant
réglementaire de circulation sur base soviétique.
Soit ! Rien que le clignotant pour le mettre, sachant que rien que son poids
va arracher l'aile, il va te falloir péparer un certain nombre de choses.
Et le moteur en consommant tout ton réservoir servirait juste à alimenter le
clignotant pour qu'il s'allume une fois.
Et bien, en C++, on te demande de faire la même chose : adapter.
Des gens ont préparés des choses.
En automochar Volume 1 : comment transformer sa BX en char Russe.
En C+Windows Volume 1 : comment lire les disques durs et les fichiers dessus
en C++.

pourtant des progres enormes avaient ete faits sur les chaines et autres
trucs utiles !
Oui, mais des progrès dans un sens. Chez Microsoft, ils ont fait ce dont ils

avaient besoin.
Alors toi, tu va devoir faire ce dont tu as besoin.
Par exemple, pour gérer les fichiers en c++, théoriquement, tu es obligé de
fabriquer un driver pour ton disque dur et faire toi même tout de A à Z.
MAIS : Des gens sont passés avant toi et ont déjà préparé ces choses. stat
en fait partie, findfirst() et findnext() aussi.
Ils t'ont laissés des notices d'utilisations. Cool : pas la peine de tout
refaire en assembleur !
Alors, sous windows, tu vas voir le merveilleux travail qu'ils ont fait :
http://msdn.microsoft.com/library/
Ils t'ont tout mâché. Ils ont fabriqué pour toi, tu n'as plus qu'à
réutiliser.
Et c'est pour ça que nous sommes HS ici, simplement parce que ces choses
sont une déviance hérétique du langage C++ qui n'est pas fait pour ça. Et
les gens ici parlent de ce pour quoi le langage est fait de nature. Et les
gens qui ont ajoutés ces choses au C++, qui ont développé tellement de
choses ne sont PAS les créateurs du langage. Ils l'ont fait que l'utiliser.
Et ici, tout le monde se fout de cette utilisation qu'on en fait, ce qui
nous intéresse, c'est comment on l'utilise, tu saisis la nuance ?

je precise que ce sont surement des questions de debutant, mais il en
faut bien , vous vous ennuiyerez sans nous :-P
Je précise que si personne explique, même si je le fais à ma manière, tu

peux pas savoir.

Pour n'ennuyer personne, va plutôt du côté du news group que je t'ai donné
précédemment, ici, nous sommes hors sujet.

--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.graphisme.programmation
fr.comp.os.ms-windows.programmation


Avatar
James Kanze
ricky writes:

|> desole pour la reponse au milieu, mais je ne voiut pas tous les
|> mesages en ce moment :-(((

|> > |> Le miracle ? : fstream et un tout petit poil de réflexion
|> > |> (indice : seekg/seekp).

|> merci pour le poil de reflexion, mais outre que le seek ne me donne
|> pas d'information sur la date,

Ni sur la longueur, sauf cas particulier.

|> je cherchais s'il y avais une facon autre que de devoir ouvrir un
|> fichier pour avoir l'information (oui je sais mettre le pointeur a
|> la fin)

|> finalement j'ai trouve la reponse aux deux avec stat, et dans la
|> struct reponse j'ai le mtime, a time ainsi que la taille fournie
|> directement

Attention, en revanche. La fonction stat ne fait pas partie de la norme,
et n'est pas présente partout. (Je crois que sous Windows, elle
s'appelle _stat, ou __stat, par exemple.)

|> j'en profite pour une nouvelle question : peut on avoir la liste des
|> fichiers d'un repertoire avec une fonctionalite de la stl ?

Non. Le C++ standard ne connaît même pas le concepte des
répertoires. Une fois de plus, il faudrait se rebattre sur des
fonctions propre au système : opendir/readdir sous Unix,
findFirst/findNext (je crois) sous Windows.

|> j'ai l'impression que, come pour le graphisme, il existe assez peu
|> de truc normalise pour gerer une arborescence .. peut etre je me
|> trompe ...

Tu te trompes. Avec le C++ pûrement standard, on ne peut pas faire
grand chose. Selon ce que tu entends par graphisme, il faudrait se
rebattre sur des bibliothèques tierces ou sur des fonctions propre au
système.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
1 2 3 4