2010-10-08 33 views
3

J'ai regardé java.nio.file.attribute.Attributes et java.nio.file.FileStore, mais n'a pas pu trouver un moyen de découvrir la taille de bloc d'un fichier-disque.Comment la taille de bloc d'un magasin de fichiers peut-elle être obtenue de façon portative dans Java 7?

+1

La taille de bloc n'est-elle pas intrinsèquement non portable? Que faire si le magasin de fichiers n'utilise pas de blocs (bien sûr, mais possible)? –

+2

@Mark La grande majorité des magasins de fichiers sont implémentés via des disques rotatifs et, par conséquent, utilisent des blocs. Je peux gérer le cas où la taille du bloc est d'un octet. Ce que je veux, c'est une façon portable de déterminer cette taille. –

Répondre

0

Voici un article sur la taille de la mémoire tampon par rapport au débit d'E/S. Synopsis: nio gère tout cela pour vous. Ce SO post conclut que vous devez utiliser une puissance de 2.

+1

Devon, je veux un moyen de déterminer la taille de bloc par programme qui ne repose pas sur la conduite d'une expérience et l'interprétation des résultats. –

+1

Je comprends cela. Cependant, il n'y a pas de mécanisme en Java qui expose la taille d'E/S préférée du système de fichiers. Étant donné que, la meilleure solution de repli consiste à utiliser un multiple probable et à faire confiance au sous-système io/nio pour faire la bonne chose. De manière générale, les systèmes de fichiers utilisent des tailles d'E/S de 4K, 8K ou 16K. Donc, l'utilisation de l'une de ces tailles sera généralement suffisante. –