salut tout le monde,
J'aimerais changer l'adresse(a mes risques et perils) d'un fichier .
Comment faire?
Merci d'avance A+ cava
salut tout le monde,
J'aimerais changer l'adresse(a mes risques et perils) d'un fichier .
Comment faire?
Merci d'avance A+ cava
Peux-tu préciser ta question?? Tu veux déplacer un fichier??
Premièrement un fichier n'a pas d'adresse...
Sous Linux/Unix il est identifié par un numéro d'inode...
Sous Windows je sais pas (surtout qu'il existe la FAT16, FAT32 et la NTFS)
Soit plus clair sur ce que tu veux faire...
a++
Ok pour l'inode sous Unix/Linux ...Envoyé par adiGuba
mais sous DOS/Windows 9x (avec FAT 16 ou 32). il a bien une adresse ce fichier. ou plutôt des adresses. celles des clusters qu'il occupe.
l'adresse de chaque cluster est composée du numéro de cylindre, celui de secteur etc...
quand tu obtiens par une interruption du DOS ou une fonction de la bibliothèque de ton compilateur la structure qui te renseigne sur le fichier (qui contient son nom, son attribut, sa date de dernière modif, sa taille etc ...) tu à également l'adresse logique du premier cluster occupé par ton fichier. la FAT te renseigne ensuite sur les autres clusters éventuellement occupés pas ce fichier.
tout d'abord, il faut convertir cette adresse logique en adresse cylindre/secteur/...
ensuite, pour changer l'adresse de ce cluster ! il faudrait utiliser l'interruption 13h de lecture/écriture directe du disque.
Il existe des fonctions d'une autre interruption plus simple car elle utilise les adresses logiques mais je ne sais plus laquelle (peut-être l'interruption 25h ... mais je ne suis pas sûr, ça fait longtemps !)
et ensuite :
1) trouver un cluster libre (d'après la FAT),
1) copier le contenu du premier cluster du fichier dans ce nouveau cluster,
2) copier l'entrée de la FAT correspondant à l'ancien cluster dans l'entrée correspondant au nouveau cluster,
3) libérer l'entrée de la FAT correspondant à l'ancien cluster,
4) remplacer dans le répertoire l'adresse de l'ancien cluster par l'adresse du nouveau.
dit comme ça ... ça a l'air simple, mais dans la pratique, pas tant que ça !
bref ... il y a pas mal de boulot !
Petits rappels :
FAT = Files Allocation Table
sur un disque dur, Il y a généralement 512 octets pas secteurs, et souvent 8 secteurs par clusters (sur les disques récents). donc 4096 octets.
Pour un petit fichier (jusqu'à 4 Ko), changer l'adresse du début du fichier, se traduit donc souvent par déplacer le fichier entier.
quant à NTFS, je ne sais pas.
oups... je ma trompé![]()
Je pensais pas qu'on appelait ca une adresse en FAT...
désolé![]()
C'est sur que c'a a l'air tres compliqué (il doit y avoir plein de cas particulier qui foute la merde...)
Enfin ca depend de ce que veut faire cava...
a++
Pour faire ce que tu veux tu dois en effet utiliser l'int 13h.
En gros :
1 - Lire la table des partitions pour trouver le premier secteur de ton disque logique
2 - Lire le secteur de boot du disk pour trouver les param du disk (par exemple le nbr de secteurs/clusters, la taille de la FAT (qui peut-etre sur 12, 16 ou 32 bits)
3 - Decoder la FAT pour trouver le 1er cluster de ton fichier
Ou plus simple par l'int 25h du DOS auquel cas tu peux sauter l'etape 1
Pour NTFS je ne sais pas
Et pour y arriver, voir les cours de formation pour apprendre le langage C : http://c.developpez.com/cours/
Pardon j'oubliais (ca fait longtemps que j'ai pas fait ca) :
pour "matcher" ton nom de fichier avec la FAT il va falloir que tu decode D'ABORD les directory pour avoir la premiére entrée de ton fichier dans la fat
Partager