Est-il possible de déterminer l'état de fragmentation d'un fichier spécifique (c'est-à-dire la quantité de fragments distincts que ce fichier occupe)? Si oui, comment cela peut-il être fait en utilisant .net?Déterminer par programme le statut de fragmentation d'un fichier
La motivation est la suivante: mon application conserve les données dans un FileStream, en modifiant sa taille à la demande. Cela entraîne éventuellement la fragmentation du fichier. Je voudrais surveiller l'état de fragmentation du fichier, et basé sur cela - prendre une décision si le fichier doit être copié et remplacé par un nouveau fichier (en le "défragmentant" sans apporter de modifications à la MFT).
@nobugz, je vous remercie pour votre POV, mais s'il vous plaît permettez-moi d'expliquer: 1. quand souvent augmenter la taille d'un FileStream, il tend à provoquer la fragmentation (dans mon expérience, voir aussi http://stackoverflow.com/questions/917309/how-i-limit-file-fragmentation-while-working-with-net). 2. créer un nouveau flux d'une certaine taille et copier le flux original dans celui-ci tend à surmonter la fragmentation, car le nouveau fichier est alloué avec une jolie séquence de clusters, donc j'ai un moyen de "réparer" cela. –
3. Je ne suppose pas la fragmentation, je suppose que c'est possible, et je cherche un moyen d'annuler ou de vérifier mes soupçons à l'exécution. 4. Je pourrais aller la façon très laide d'activer la defragAnalysis et vérifier le fichier journal ... mais c'est vraiment moche. 5. Je peux vous le dire avec certitude, mes clients ne défragment pas leurs disques, et la plupart utilisent encore WinXP. @ Mark Ransom, J'aimerais avoir un SSD, et j'aimerais en avoir un pour chacun de mes clients. Peut-être que dans dix ans, la fragmentation des fichiers serait obsolète. Pendant ce temps ... –
@nobugz, à la fin, vous avez probablement raison, c'est probablement l'optimisation prématurée. Encore, j'aimerais obtenir une réponse à la question elle-même (sans tenir compte de la motivation) –