Qu'est-ce que l'utilisation exacte de java nio paquet quand déjà les méthodes sont disponibles avec io paquet
J'ai été l'apprentissage de java nio paquet et j'ai réalisé il ya beaucoup de méthodes déjà prévue par le Fichier qui nio.Fichiers est de fournir à nouveau en utilisant le Chemin de la classe. Comme que peu de plus j'ai eu.
Je suis réellement pas obtenir ce qui est de l'utilisation réelle de nio paquet.
Je suis juste très nouveau à ce package, donc peut être que ma question est mal, mais un peu d'aide peut stimuler moi de lire plus loin.
- Pas un answser, je vais donc poster un commentaire: La page de Wikipedia sur elle parle de certains des objectifs et des raisons pour le nio paquet.
- Pédant, "Chemin" est une partie de la NIO2 bibliothèque ajoutée dans Java 7. BTW: bien qu'il y est beaucoup de l'accent mis sur la non-bloquant NIO sockets, j'ai l'habitude d'utiliser le blocage de NIO Sockets qui sont plus simples à utiliser à mon humble avis. NIO2 Ajouter asynchrone NIO pour les Sockets et les Fichiers.
Vous devez vous connecter pour publier un commentaire.
La principale différence entre IO et NIO est que IO est le blocage, alors que NIO est non bloquant.
Cet article explique les différences dans les packages et ce blocage et les non-bloquant IO est.
java.io.File
vsjava.nio.file
?De programmation Java, I/O a jusqu'à récemment été réalisée à l'aide d'un flux de métaphore. Toutes les e/S est considéré comme le mouvement d'octets unique, un à la fois, par le biais d'un objet appelé un Ruisseau. Flux I/O est utilisé pour communiquer avec le monde extérieur. Il est également utilisé en interne, pour transformer des objets en octets, et puis de nouveau dans les objets.
NIO a le même rôle et le but que l'original I/O, mais il utilise une autre métaphore — bloc d'e/s de java.nio (nouveau/non-blocage I/O) ) API a été introduite avec le JDK1.4 .
Quelle est la différence entre les flux d'e/S et e/S de bloc ?
Un flux orienté e/O système traite les données d'un octet à la fois. Un flux d'entrée produit un octet de données, et un flux de sortie consomme un octet de données. Il est très facile de créer des filtres pour des données en streaming. Il est aussi relativement simplement enchaîner plusieurs filtres afin que chacun fait sa part dans ce qui équivaut à un seul, sophistiqué mécanisme de traitement. Sur le revers de la médaille, flux orienté e/O est souvent assez lente.
Un bloc orienté e/O système de traite des données dans des blocs. Chaque opération de produit ou consomme un bloc de données en une seule étape. Le traitement des données par le bloc peut être beaucoup plus rapide qu'un traitement par l' (en continu) de l'octet. Mais orientée bloc I/O manque un peu de l'élégance et de la simplicité de flux orienté e/O.
Lorsque vous devez utiliser java.io et quand devez-vous préférez java.nio ?
Évolutivité sera probablement le lecteur de votre choix de forfait. java.net aurez besoin d'un thread par socket. Codage, il sera nettement plus facile. java.nio est beaucoup plus efficace, mais est difficile à contourner.
Vous pouvez obtenir une meilleure évolutivité une fois que vous faites affaire avec des dizaines de milliers de connexions, mais en moindre nombre, vous aurez probablement obtenir un meilleur débit avec blocage IO.
Lorsque l'on travaille avec SSL java.nio n'est pas quelque chose de facile à traiter avec
Important : Si vous travaillez avec les paquets, il n'est pas une bonne idée de créer le cadre à partir de zéro jusqu'à ce que et à moins d'avoir une raison impérieuse de le faire.
Pour java.nio , les projets tels que le Grizzly et Rapide Serveur pour fournir des réutilisable non bloquant les composants du serveur.
La peine de lire Les points de douleur avec java.nio
Enfin, il se résume à des exigences spécifiques de vos projets et de ce que vous essayez d'atteindre. Certains des meilleurs solutions peuvent ne pas exiger que le plus complexe de l'infrastructure à al
Mise à jour : Récemment découvert sur NIO.2 paquet qui existe depuis jdk 1.7. NIO.2 est différent de celui de NIO, le principal étant que NIO.2 offres asynchrone canal de la fonctionnalité . NIO.2 apprêt
Si vous travaillez avec NIO, la peine de passer par la différence et qui convient à votre but.
Java NIO: les Canaux et les Tampons
Dans la norme IO API vous travaillez avec l'octet de ruisseaux et de flux de caractères. Dans NIO vous travaillez avec des canaux et des zones tampons. Les données sont toujours lus à partir d'un canal dans une mémoire tampon, ou écrit à partir d'un tampon à un canal.
Java NIO: Non bloquant IO
Java NIO vous permet de faire des non-bloquant IO. Par exemple, un thread peut demander à un canal de lire des données dans une mémoire tampon. Alors que la chaîne lit les données dans la mémoire tampon, le thread peut faire quelque chose d'autre. Une fois que les données sont lues dans la mémoire tampon, le thread peut alors continuer son traitement. Le même est vrai pour l'écriture de données sur les canaux.
Java NIO: les Sélecteurs
Java NIO contient la notion de "sélecteurs". Un sélecteur est un objet que l'on peut contrôler de multiples canaux pour événements (comme: connexion ouverte, les données sont arrivés etc.). Ainsi, un seul thread peut surveiller plusieurs canaux de données.
Plus de détails sur orcale
Presque chaque méthode dans
java.io.File
a des problèmes qui ne peuvent pas être fixés pour des raisons de compatibilité, le plus évident est que les méthodes de retour d'unboolean
quand ils échouent. Ces questions, plus le désir de support enfichable à des systèmes de fichiers et bien d'autres choses a nécessité le développement d'un tout nouveau système de fichiers de l'API ainsi, c'est pourquoijava.nio.File
a été créé.NIO également introduit de Canaux que l'abstraction de la spécialisation dans les Flux de Fichier, Socket Réseau.