Y a-t-il une différence de mise en œuvre entre fichier.length () code> et fichiers.size () code> en java? Java 7 introduit fichiers.Size () code> méthode. P>
3 Réponses :
La principale différence est que fichiers.Size () code> peut gérer des objets qui ne sont pas des" fichiers réguliers "(tels que définis par fichiers.isregularfile () code> ). p>
Cela signifie que, selon lequel FileSystemProviders < / Code> Vous avez disponible, il pourrait être en mesure d'obtenir la taille d'un fichier dans un fichier zip, il pourrait être capable de gérer des fichiers accessibles via FTP / SFTP, ... P>
Ancien simple fichier.length ( ) code> ne peut en faire aucun de cela. Il
Le the java.nio.file.files code> classe dans JDK 7 est une classe qui fournit des méthodes statiques qui fonctionnent sur des fichiers. P>
fichiers.size (Chemin de chaîne) code> La méthode renvoie la taille du fichier à partir du java.nio.file.spi.filesystemprovider code> . Ce n'est pas rien à voir avec fichier.length () code> car cela vous renvoie la taille du fichier réelle qui a réellement "connecté" à. P>
Selon les docs Files.Size (chemin de chemin) fait i> renvoie la "taille du fichier réelle": renvoie la taille d'un fichier (en octets). La taille peut différer de la taille réelle sur le système de fichiers en raison de la compression, de la prise en charge des fichiers clairsemés ou d'autres raisons. code>
Une différence importante est que En outre, comme décrit dans Cette réponse , Conclusion: En général, préférez les méthodes à partir des fichiers code> de la classe code> sur le fichier Legacy fichiers.size.size.Size () code> jette une exception ioexception si quelque chose ne va pas, tandis que fichier.length () code> retourne simplement 0. Je recommanderais donc d'utiliser Files.Size () Code> Parce: P>
fichier.length () code> car il retournera 0 dans les deux cas. LI>
fichier.length () code>. En revanche, la ioexception projetée de fichiers.Size () code> comprendra généralement un message indiquant la cause de la défaillance. LI>
ul>
fichiers.Size () code> peut fonctionner avec Tout fournisseur de système de fichiers (par exemple pour les systèmes de fichiers ZIP ou FTP) tandis que fichier.length () code> fonctionne uniquement avec le système de fichiers "régulier" exposé par votre système d'exploitation. P>
code> classe. p>