web-dev-qa-db-fra.com

Obtenir la taille du fichier à partir du tableau d'octets (sans enregistrer sur le disque)

J'ai un tableau d'octets et je veux calculer quelle serait la taille du fichier si j'écris ces octets dans un fichier. Est-ce possible sans écrire le fichier sur le disque?

42
nKognito

Qu'en est-il de array.Length? Ressemble à une taille en octets.

75
Sergey Berezovskiy

Euh, oui:

int length = byteArray.Length;

Un octet en mémoire serait un octet sur le disque ... au moins en termes de système de fichiers de niveau supérieur. Vous devez également envisager le nombre de blocs/clusters individuels qui seraient utilisés (et les frais généraux pour une entrée de répertoire) et toute compression que le système d'exploitation peut fournir, mais la question de savoir si c'est ce que vous recherchez n'est pas claire.

Si vous voulez vraiment faire connaître la "taille sur le disque" par opposition à la taille du fichier (de la même manière que Windows peut afficher les deux nombres), je suppose que vous devrez vraiment l'écrire sur disque - puis utilisez une API Win32 pour connaître la taille réelle du disque.

45
Jon Skeet

Array.Length donnerait votre taille totale exprimée en octets.
La dimension physique sur le disque peut être un peu plus compte tenu de la taille du cluster.

4
LittleSweetSeas