chris081
Messages postés90Date d'inscriptionmercredi 24 décembre 2008StatutMembreDernière intervention 4 février 2009 24 janv. 2009 à 19:27
Salut
Ca dépends de la taille des clusters du disque. Je ne crois pas que tu puisse récupérer une telle information en Java, a moins que tu n'utilises l'interface native avec un code en C++.
Si tu souhaites t'y aventurer, alors voila:
Comment ca fonctionne?
Suppossons un fichier qui contient 6 caractères ("abcdef") et que chacun des caractères est codé sur 1 octets. La taille réelle du fichier est de 6 octets. Cependant, la taille des clusters de ton disque dur est de 4 octets. Puisque les données de ton fichier ne peuvent être insérées dans un seul cluster, elle seront insérées dans 2 cluster. Étant donné qu'un cluster ne peut être vide, alors ton système d'exploitation écrira des bytes nul (0) pour complèter le second cluster. Ce qui te donnera une taille virtuelle de 8 octets pour un fichier contenant 6 caractères!.
(ce n'est pas pertinent pour le calcul, mais...). Tu as fermé ce fichier et tu l'as enregistré. 2 jours plus tard, tu ajoutes a ce fichier " 12345" (donc 6 nouveau octets supplémentaires). Cependant, la rotation du disque interne a ton disque dur fait que lorsque tu enregistres ce fichier, les clusters ou il enregistre les données ne sont pas a la suite des clusters du premier enregistrement. Alors le disque dur écrit les nouvelles données dans 2 nouveau cluster de 4 octets chaque. (1 plein de 4 octets, et 1 de 2 octets, qu'il emplit avec des 0). Donc tu as maintenant un fichier avec une taille réelle de 12 octets, une taille virtuelle de 16 octets et ce fichier est répartit en 4 clusters.
Lorsque tu effectuera une défragementation de ton disque dur, le defragmenteur prendra
les 2 premiers octets du 3e cluster et écrasera les 2 derniers octets du 2e cluster.
Il prendra les 2 derniers octets du 3e cluster et les inséreras comme étant les 2 premiers
octets du 3e cluster. Il prendra alors les 2 premiers octets du 4e cluster, et les insérera
a la fin du 3e cluster, libérant ainsi le 4e cluster:
avant defragmentation
[abcd] [ef00] [ 123] [4500]
defragmentation en cours
[abcd] [ef 1] [0023] [4500]
: [abcd] [ef 1] [2300] [4500]
: [abcd] [ef 1] [2345] [0000]
apres defragmentation : [abcd] [ef 1] [2345]
ton fichier a maintenant une taille réelle et virtuelle de 12 octets!
C'est ainsi que ca fonctionne sous Windows. J'imagine que c'est similaire sous Linux, sauf qu'au mieux de mes connaissances, il n'y a pas d'utilitaires permettant de défragmenter sous Linux, alors j'ignore ce qui se produit quand un fichier a une taille qui n'emplit pas complètement les clusters du disque.
J'espère que ca t'aide un petit peu
chris081
<hr align="left" width="10%" />
Est-ce que les femmes pètent autant que les hommes ?
Oui. Cependant, les hommes semblent en tirer plus de gloire que les femmes.