Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Invité de passage
    Inscrit en
    mars 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 1
    Points : 1
    Points
    1

    Par défaut changer l'adresse d'un fichier...

    salut tout le monde,

    J'aimerais changer l'adresse(a mes risques et perils) d'un fichier .
    Comment faire?

    Merci d'avance A+ cava

  2. #2
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 92
    Points : 71
    Points
    71

    Par défaut

    Peux-tu préciser ta question?? Tu veux déplacer un fichier??
    Zero
    My site : http://blog.lecacheur.com
    GWhere project : http://www.gwhere.org
    Debian Addict site : http://www.debianaddict.org

  3. #3
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 312
    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 312
    Points : 21 542
    Points
    21 542

    Par défaut

    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++

  4. #4
    Nouveau Membre du Club
    Inscrit en
    mai 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 22
    Points : 36
    Points
    36

    Par défaut

    Citation Envoyé par adiGuba
    Premièrement un fichier n'a pas d'adresse...
    Ok pour l'inode sous Unix/Linux ...

    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.

  5. #5
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 312
    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 312
    Points : 21 542
    Points
    21 542

    Par défaut

    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++

  6. #6
    fd
    fd est déconnecté
    Membre actif
    Inscrit en
    mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 131
    Points : 154
    Points
    154

    Par défaut Fat

    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

  7. #7
    fd
    fd est déconnecté
    Membre actif
    Inscrit en
    mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 131
    Points : 154
    Points
    154

    Par défaut Ha oui

    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

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •