Quelle est la différence entre les flux Java
Nov 14, 2019 am 09:36 AMToutes les données du programme sont transmises ou enregistrées sous forme de flux. Lorsque le programme a besoin de données, il doit utiliser le flux d'entrée pour lire les données, et lorsque le programme en a besoin. data Lors de la sauvegarde, elle s'effectue à l'aide du flux de sortie.
Les entrées et sorties du programme sont enregistrées sous forme de flux, et ce qui est enregistré dans les flux sont en fait des fichiers d'octets.
Flux d'octets et flux de caractères
Il existe deux catégories principales de contenu de fichier d'exploitation dans le package java.io?: le flux d'octets et le flux de caractères, tous deux divisés en opérations d’entrée et de sortie. La sortie des données dans un flux d'octets se fait principalement à l'aide de OutputStream, et la saisie se fait à l'aide d'InputStream. La sortie dans un flux de caractères se fait principalement à l'aide de la classe Writer et les flux d'entrée sont principalement effectués à l'aide de la classe Reader. (Ces quatre sont des classes abstraites)
Java fournit un package dédié aux fonctions d'entrée et de sortie, Java.io, comprenant :
InputStream, OutputStream, Reader, Writer
InputStream et OutputStream, tous deux sont con?us pour les flux d'octets et sont principalement utilisés pour traiter des octets ou des objets binaires.
Reader et Writer sont con?us pour les flux de caractères (un caractère occupe deux octets) et sont principalement utilisés pour traiter des caractères ou des cha?nes.
L'unité de traitement du flux de caractères est un caractère Unicode de 2 octets, fonctionnant respectivement sur des caractères, des tableaux de caractères ou des cha?nes, tandis que l'unité de traitement du flux d'octets est de 1 octet, fonctionnant sur des octets et des tableaux d'octets. Par conséquent, le flux de caractères est formé par la machine virtuelle Java convertissant les octets en caractères Unicode de 2 octets, ce qui lui permet de mieux prendre en charge plusieurs langues?! S'il s'agit de fichiers audio, d'images et de chansons, il est préférable d'utiliser des flux d'octets. S'il est lié au chinois (texte), il est préférable d'utiliser des flux de caractères.
Tous les fichiers sont stockés en octets. Ce qui est retenu sur le disque, ce ne sont pas les caractères du fichier mais les caractères sont d'abord codés en octets puis ces octets sont stockés sur le disque. Lors de la lecture d'un fichier (notamment d'un fichier texte), celui-ci est également lu octet par octet pour former une séquence d'octets.
Le flux d'octets peut être utilisé pour tout type d'objet, y compris les objets binaires, tandis que le flux de caractères ne peut traiter que des caractères ou des cha?nes?; 2. Le flux d'octets fournit la fonction de traiter tout type d'opération d'E/S, mais il ne peut pas les gérer. Les caractères Unicode directement et les flux de caractères font exactement cela.
Le flux d'octets est le plus basique, toutes les sous-classes d'InputStrem et OutputStream le sont, principalement utilisées pour traiter des données binaires, elles sont traitées par octets, mais en réalité beaucoup de données sont du texte, et le concept de flux de caractères est proposé, qui est traité en fonction du codage de la machine virtuelle, c'est-à-dire que le jeu de caractères est converti. Les deux sont liés via InputStreamReader et OutputStreamWriter. En fait, ils sont liés via les problèmes de caractères chinois byte[] et String. qui surviennent au cours du développement sont en réalité causés par l'incohérence dans la conversion entre les flux de caractères et les flux d'octets.
Le type de retour de la méthode read() de la classe Reader est int : le caractère lu sous forme d'entier (représentant 16 bits sur deux octets), allant de 0 à 65535 (0x00-0xffff), si Lorsque la fin du flux est atteinte, -1 est renvoyé.
Bien que read() de inputStream renvoie également un int, puisque cette classe est orientée vers les flux d'octets et qu'un octet occupe 8 bits, elle renvoie une valeur d'octet int comprise entre 0 et 255. Si aucun octet n'est disponible car la fin du flux a été atteinte, la valeur -1 est renvoyée. Par conséquent, les valeurs qui ne peuvent pas être représentées par 0-255 doivent être lues à l'aide d'un flux de caractères ! Par exemple, les caractères chinois.
Site Web php chinois, un grand nombre de Tutoriels d'introduction à Java gratuits, bienvenue pour apprendre en ligne !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pré-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusofperforming lightbetterine scénarios.

HTTP Log Middleware dans GO peut enregistrer les méthodes de demande, les chemins de requête, la propriété intellectuelle du client et le temps qui prend du temps. 1. Utilisez http.handlerfunc pour envelopper le processeur, 2. Enregistrez l'heure de début et l'heure de fin avant et après l'appel Suivant.Servehttp, 3. Obtenez le vrai client IP via R.RemoteAddr et X-Forwared-For Headers, 4. Utilisez le log.printf aux journaux de demande de sortie, 5. L'exemple de code complet a été vérifié pour s'exécuter et convient au démarrage d'un projet petit et moyen. Les suggestions d'extension incluent la capture des codes d'état, la prise en charge des journaux JSON et le suivi des ID de demande.

Le choix du bon type HTMLinput peut améliorer la précision des données, améliorer l'expérience utilisateur et améliorer la convivialité. 1. Sélectionnez les types d'entrée correspondants en fonction du type de données, tels que le texte, le courrier électronique, le tel, le numéro et la date, qui peuvent vérifier automatiquement la somme de la somme et l'adaptation au clavier; 2. Utilisez HTML5 pour ajouter de nouveaux types tels que l'URL, la couleur, la plage et la recherche, qui peuvent fournir une méthode d'interaction plus intuitive; 3. Utilisez l'espace réservé et les attributs requis pour améliorer l'efficacité et la précision du remplissage des formulaires, mais il convient de noter que l'espace réservé ne peut pas remplacer l'étiquette.

GradleisthebetterChoiceFormostNewProjectsDuetOtsSuperiorflexibility, Performance et ModerNtoolingSupport.1.gradle’sgroovy / kotlindslismoreConcis

L'utilisation de la bibliothèque OpenCSV est le meilleur choix pour lire les fichiers CSV. Il peut gérer des situations complexes et prend en charge plusieurs fonctionnalités; 2. Pour les fichiers CSV simples, vous pouvez utiliser BufferedReader intégré de Java combiné avec la méthode Split; 3. Si vous avez besoin d'un contr?le de format plus flexible ou si vous avez utilisé des composants Apache, vous pouvez choisir Apache Commonscsv. OpenCSV est recommandé pour sa simplicité, sa robustesse et sa capacité à gérer les problèmes de CSV dans des scénarios réels.

Tout d'abord, CheckifThefnKeySettingisInterferingyTryingBothThevolumeKeyAlonEndfn volumeKey, thentogglefnlockwithfn espifavailable.2.enterbios / uefidUringbootAnableFunctionKeysordiSablehotKeyModetoenSureVolumeSarereCognined.3.updateorreinstallAdriodriving

Utilisez la méthode .equals () pour comparer le contenu de la cha?ne, car == ne compare les références d'objet plut?t que le contenu; 1. Utilisez .equals () pour comparer également les valeurs de cha?ne; 2. Utiliser .EqualSignoreCase () pour comparer l'ignorance du cas; 3. Utilisez .Compareto () pour comparer les cha?nes dans l'ordre du dictionnaire, renvoyant 0, nombres négatifs ou positifs; 4. Utiliser .CompareToIgnoreCase () pour comparer le cas Ignorer; 5. Utilisez des objets.equals () ou de la méthode d'appel s?r pour traiter les cha?nes nulles pour éviter les exceptions de pointeur nul. En bref, vous devez éviter d'utiliser == pour les comparaisons de contenu de cha?ne, sauf s'il est explicitement nécessaire de vérifier si l'objet est en phase.

L'utilisation de String.join () (Java8) est la méthode recommandée la plus simple pour connecter les tableaux de cha?ne, spécifiez simplement le séparateur directement; 2. Pour les anciennes versions de Java ou lorsque plus de contr?le est nécessaire, vous pouvez utiliser StringBuilder pour traverser et épisser manuellement; 3. StringJoiner convient aux scénarios qui nécessitent des formats plus flexibles tels que les préfixes et les suffixes; 4. Utilisation de Arrays.Stream () combinée avec des collectionneurs.joining () convient au filtrage ou à la conversion du tableau avant de rejoindre; Pour résumer, si Java8 et supérieur est utilisé, la méthode String.join () doit être préférée dans la plupart des cas, ce qui est concis et facile à lire, mais pour une logique complexe, elle est recommandée.
