Table des matières
4 Classification du flux de données :
Le flux de données standard fourni avec le système Java : java.
attributs
1. Classification spécifique des flux io

1) FileInputStream utilise un fichier comme InputStream pour implémenter l'opération de lecture de fichier
2) ByteArrayInputStream : Utiliser un tampon en mémoire comme InputStream
3) StringBufferInputStream : Utiliser un objet String comme InputStream
4) PipedInputStream : Implémenter le concept de pipe, principalement dans les threads Utiliser
5) SequenceInputStream : fusionner plusieurs InputStreams en un seul InputStream

2. OutputStreamClasse abstraite " > InputStream est un flux d'entrée d'octets. C'est elle-même une classe abstraite et doit s'appuyer sur ses sous-classes. Implémentant diverses fonctionnalités, cette classe abstraite est la superclasse de toutes les classes qui représentent des flux d'entrée d'octets. Les flux qui héritent de InputStream sont utilisés pour saisir des données dans le programme, et l'unité de données est l'octet (8 bits) ;

InputStream est une classe pour saisir des données d'octets, donc la classe InputStream fournit trois méthodes de lecture surchargées. Méthodes courantes dans la classe Inputstream :
(1) public abstract int read() : Lire un octet Les données, le retour. value est une valeur de type int avec les bits hauts remplis par 0. Si la valeur de retour = -1, cela signifie qu'aucun octet n'a été lu et que le travail de lecture est terminé.
(2) public int read(byte b[ ]) : lit les octets de données b.length et les place dans le tableau b. La valeur de retour est le nombre d'octets lus. Cette méthode est en fait implémentée en appelant la méthode suivante
(3) public int read(byte b[ ], int off, int len) : lit jusqu'à len octets de données du flux d'entrée et les stocke dans le décalage dans le tableau b dont le montant du décalage est désactivé.
 (4) public int available() : renvoie le nombre d'octets pouvant être lus dans le flux d'entrée. Remarque : Si l'entrée est bloquée, le thread en cours sera suspendu. Si l'objet InputStream appelle cette méthode, il ne retournera que 0. Cette méthode doit être appelée par un objet de sous-classe qui hérite de la classe InputStream pour être utile
. (5) public long skip(long n) : ignore n octets dans le flux d'entrée. La valeur de retour est le nombre d'octets réellement ignorés.
(6) public int close() : nous finissons d'utiliser. Enfin, le flux que nous avons ouvert doit être fermé.

Sous-classes principales :

1) FileInputStream utilise un fichier comme InputStream pour implémenter l'opération de lecture de fichier
2) ByteArrayInputStream : Utiliser un tampon en mémoire comme InputStream
3) StringBufferInputStream : Utiliser un objet String comme InputStream
4) PipedInputStream : Implémenter le concept de pipe, principalement dans les threads Utiliser
5) SequenceInputStream : fusionner plusieurs InputStreams en un seul InputStream

2. OutputStreamClasse abstraite

3. Flux d'entrée de fichier : classe FileInputStream
1. Classe abstraite de lecteur
Différence entre InputStream et Reader Différence entre OutputStream et Writer
Maison Java javaDidacticiel Flux de sortie du flux d'entrée Java

Flux de sortie du flux d'entrée Java

May 28, 2017 am 11:28 AM
输入


1. Qu'est-ce que IO

Les opérations d'E/S en Java font principalement référence à l'utilisation de Java pour les opérations d'entrée et de sortie. Tous les mécanismes d'E/S en Java sont basés sur. Les flux de données effectuent des entrées et des sorties. Ces flux de données représentent une séquence fluide de caractères ou d'octets. Les flux d'E/S Java fournissent des méthodes standard pour lire et écrire des données. Tout objet représentant une source de données en Java fournira des méthodes pour lire et écrire ses données dans un flux de données.

Java.io est le package principal pour la plupart des classes d'entrée/sortie orientées flux de données. De plus, Java prend également en charge la transmission par blocs et le bloc IO est utilisé dans la bibliothèque principale java.nio.

L'avantage du stream IO est qu'il est simple et facile à utiliser, mais l'inconvénient est qu'il est moins efficace. Le bloc IO est très efficace, mais la programmation est plus compliquée.
Java IOModèle :
La conception du modèle IO de Java est très excellente. Elle utilise le mode Décorateur pour diviser les flux par fonction. Vous pouvez assembler dynamiquement ces flux pour obtenir votre. fonctionnalité requise. Par exemple, si vous avez besoin d'un flux d'entrée de fichier mis en mémoire tampon, vous devez utiliser une combinaison de FileInputStream et BufferedInputStream.



Concepts de base du flux de données

Le flux de données est une collection de données continues, tout comme le débit d'eau dans une conduite d'eau, l'eau est fournie petit à petit à une extrémité de la conduite d'eau , et dans la conduite d'eau. Ce que vous voyez à l'autre extrémité est un jet d'eau continu. Le programme d'écriture de données peut écrire des données dans le pipeline de flux de données segment par segment. Ces segments de données formeront un long flux de données en séquence. Pour les programmes de lecture de données, la segmentation du flux de données pendant l'écriture ne peut pas être vue à chaque fois, mais seules les données précédentes peuvent être lues en premier, puis les données suivantes. Que les données soient écrites en plusieurs lots ou écrites dans leur ensemble en une seule fois, l'effet lors de la lecture est exactement le même.

"Un flux est la source ou le point final des données stockées sur un disque ou d'autres périphériques

Il existe trois façons de stocker des données sur un ordinateur, l'un est le stockage externe, l'un est la mémoire et l'autre est le cache. Par exemple, le disque dur, le disque magnétique, la clé USB, etc. de l'ordinateur sont tous des stockages externes. Il y a une clé USB sur l'ordinateur et le cache est dans le processeur. Le stockage externe a la plus grande capacité de stockage, suivi de la mémoire et enfin du cache. Cependant, la lecture des données du stockage externe est la plus lente, suivie de la mémoire et du cache la plus rapide. Voici un résumé de la lecture des données de la mémoire externe vers la mémoire et de l'écriture des données de la mémoire vers la mémoire externe. Pour comprendre la mémoire et le stockage externe, nous pouvons simplement la comprendre comme un conteneur, c'est-à-dire que le stockage externe est un conteneur et la mémoire est un autre conteneur. Alors, comment lire les données du conteneur de stockage externe dans le conteneur de mémoire et comment enregistrer les données du conteneur de mémoire sur un stockage externe ?

Dans la bibliothèque de classes Java , le contenu de la partie IO est très vaste car il couvre un large éventail de champs :

Entrée standard et sortie, opérations sur les fichiers, flux de données sur le réseau, flux string, flux d'objets, zipflux de fichiers, etc., L'abstraction d'entrée et de sortie en Java est appelée un ruisseau, tout comme une conduite d'eau, reliant deux récipients. La lecture de données de la mémoire externe vers la mémoire est appelée flux d'entrée, et l'écriture de données de la mémoire vers la mémoire externe est appelée flux de sortie.

Stream est un concept très vivant. Lorsque le programme a besoin de lire des données, il ouvrira un flux vers la source de données. Cette source de données peut être un fichier, une mémoire ou une connexion réseau. De même, lorsque le programme doit écrire des données, il ouvrira un flux vers la destination.


Les concepts de base résumés sont les suivants :

1) Flux de données :

Un ensemble ordonné de Séquence de données des octets de début et de fin. Y compris le flux d’entrée et le flux de sortie.

2) Flux d'entrée (Flux d'entrée) :

Le programme lit la source de données à partir du flux d'entrée. Les sources de données incluent le monde extérieur (clavier, fichiers, réseau...), qui est le canal de communication qui lit la source de données dans le programme

3) Flux de sortie  :

Le programme écrit des données dans le flux de sortie. Un canal de communication qui transmet les données du programme vers le monde extérieur (moniteur, imprimante, fichier, réseau...).

Le but de l'utilisation du flux de données est de rendre la sortie et l'entrée indépendantes de l'appareil.

Input Stream ne se soucie pas de l'appareil d'où proviennent la source de données (clavier, fichier, réseau)
Output Stream ne se soucie pas de l'appareil auquel les données sont destinées (clavier, fichier, réseau)

4 Classification du flux de données :

Les données de la séquence de flux peuvent être soit des données binaires originales non traitées, soit des données spécifiques conformes à un certain format après un certain encodage. Il existe donc deux types de flux en Java :
1) Flux d'octets : La plus petite unité de données dans le flux de données est l'octet
2) Flux de caractères : données La plus petite unité de données du flux est un caractère. Les caractères en Java sont codés en Unicode et un caractère occupe deux octets.



3. >

Les programmes Java peuvent brièvement échanger des informations avec le monde extérieur via des paramètres de ligne de commande. En même temps, ils permettent également l'échange d'informations avec des périphériques d'entrée et de sortie standard, tels que. comme les claviers et les moniteurs. Grâce aux fichiers, des informations sous n'importe quelle forme de données peuvent être échangées avec le monde extérieur.

1. Paramètres de ligne de commande


  1. public class TestArgs { 

  2. public statique void main(String[ ] args) {

  3.  

    pour (int i = 0; i < args.length; i++) {

  4. System.out.

    println("args[" + i + "] est <" + args[i] + ">");


Exécuter la commande : Java Java C VB

Résultat de l'exécution :

args[0] est

args[1] est

args[ 2] est

2. Flux de données d'entrée et de sortie standard

Le flux de données standard fourni avec le système Java : java.

lang

.System :


    java.lang.System 
  1. public

    final class System étend Objet{

  2. erreur PrintStream statique;

    //Flux d'erreur standard (sortie)

  3. static InputStream in;

    //Entrée standard (flux d'entrée clavier)

  4. static PrintStream out;

    //Standard output Stream ( flux de sortie du moniteur)

  5. }


Remarque :
(1) La classe System ne peut pas créer des objets et ne peut utiliser que ses trois membres statiques directement.
(2) Chaque fois que la méthode principale est exécutée, les trois objets ci-dessus sont automatiquement générés.

1) Flux de sortie standard System.out

System.out génère des données vers le périphérique de sortie standard , son type de données est pour PrintStream. Méthode :

Void print(paramètre)

Void println(paramètre)

2) Flux d'entrée standard System.in

System.in lit les données du périphérique d'entrée standard (obtient les données à partir de l'entrée standard, généralement le clavier), et son type de données est InputStream. Méthode :

int read() //Renvoie le code ASCII. Si la valeur de retour = -1, cela signifie qu'aucun octet n'a été lu et que le travail de lecture est terminé.

int read(byte[] b)//Lire plusieurs octets dans le tampon b La valeur de retour est le nombre d'octets lus

Par exemple :



  1. importer java.io.*

  2. public class StandardInputOutput {

  3. public static void main(String args[]) {

  4. int b;

  5. essayez {

  6. System.out.println(
  7. "veuillez saisir :");

  8. ((b = System.in.read()) != -
  9. 1) {

    System.out.print((char ) b); 

  10.                                                    🎜>

  11. System.out.println(e.toString());

  12. }

  13. En attente de saisie au clavier, quelle que soit la saisie au clavier est imprimé :
  14. 3) Flux d'erreurs standard


System.err génère la norme erreur

, son type de données est PrintStream. Veuillez vous référer à l'

API

pour des instructions détaillées.

La sortie standard appelle la méthode println via System.out pour afficher les paramètres et envelopper les paramètres, tandis que la méthode d'impression affiche les paramètres mais n'enveloppe pas la ligne. La méthode println ou print implémente plusieurs méthodes de sortie de types de données de base via

surcharge , y compris les types de paramètres de sortie boolean, char, int, long, float

et double. Dans le même temps, les méthodes dont les types de paramètres de sortie sont char[], String et Object sont également surchargées. Parmi elles, les méthodes print(Object) et println(Object) appelleront la méthode toString du paramètre Object au moment de l'exécution.

importer java.io.BufferedReader

importer java.io.IOException;


  1. importer java.io.InputStreamReader ; >public

    class StandardInputOutput { 🎜>statique
  2. void main(String args[]) {
  3. Chaîne s;

  4. InputStreamReader ir =

  5. nouveau
  6. InputStreamReader(System.in);

    BufferedReader in =

    new BufferedReader( ir);
  7. System.out.println(

    "Système Unix : ctrl-d ou ctrl-c
  8. Quitter
  9. "

                                                                                               🎜>

  10.                                                                                                                                                                                       >()
  11.                                                                                                             >

     
  12. while (s !=
  13. null) {

  14.        System.out.println("Lire : " + s);

  15. s = in.readLine(); in.close();

  16. } catch (IOException e) { // Attrape toutes les exceptions IO

  17. 🎜>                                                                                            

  18. Architecture hiérarchique 4.java.IO

  19. Les éléments les plus importants de l'ensemble du package Java.io sont 5 classes et une
  20. interface

    . Les cinq classes font référence à File, OutputStream, InputStream, Writer et Reader ; une interface fait référence à Seriallessly. Une fois que vous maîtriserez ces opérations IO de base, vous aurez une compréhension préliminaire du système IO en Java

  21. Java I/O comprend principalement les niveaux suivants, comprenant trois parties :

  22. 1. Partie streaming
  23. —IO La partie principale

  24. 2. La partie non-streaming
  25. - comprend principalement certaines classes qui assistent la partie streaming, telles que : la classe File, la classe RandomAccessFile et la classe FileDescriptor

    3. classes--classes liées à la sécurité

    dans la partie lecture des fichiers, telles que : classe SerializingPermission et
  26. système de fichiersClasses, telles que : Classe FileSystem et classe Win32FileSystem et classe WinNTFileSystem.
  27. Les principales catégories sont les suivantes :

  28. 1. Fichier (caractéristiques et gestion des fichiers) : utilisé pour les informations de description des fichiers ou des répertoires, telles que la génération de nouveaux répertoires, la modification des noms de fichiers,
  29. supprimer

    Fichier, déterminer le chemin du fichier, etc.

    2. InputStream (opération au format binaire) : Classe abstraite, opération d'entrée basée sur les octets, est la classe parent de tous les flux d'entrée. Définit les caractéristiques communes que possèdent tous les flux d’entrée.

    3. OutputStream (opération au format binaire) : classe abstraite. Opérations de sortie basées sur les octets. Est la classe parent de tous les flux de sortie. Définit les caractéristiques communes à tous les flux de sortie.

    Les caractères en Java adoptent la norme Unicode. Un caractère fait 16 bits, c'est-à-dire qu'un caractère est représenté par deux octets. À cette fin, des flux de traitement des caractères ont été introduits en JAVA.

    4. Lecteur (opération de format de fichier) : classe abstraite, opération de saisie basée sur les caractères.

    5. Writer (opération de format de fichier) : classe abstraite, opération de sortie basée sur les caractères.

    6. RandomAccessFile (opération de fichier aléatoire) : il possède des fonctions riches Vous pouvez effectuer des opérations d'accès (entrée et sortie) à partir de n'importe quel emplacement du fichier.

    L'architecture du flux IO en Java est telle que montrée dans la figure :



    Dans le package java.io du langage Java, la classe File fournit des opérations et des méthodes de gestion pour décrire les fichiers et les répertoires. Cependant, la classe File n'est pas une sous-classe d'InputStream, OutputStream ou Reader ou Writer, car elle n'est pas responsable de l'entrée et de la sortie des données, mais est spécifiquement utilisée pour gérer les fichiers et répertoires du disque.

    Fonction : La classe File est principalement utilisée pour nommer des fichiers,
    interroger

    fichiers

    attributs

    et

    traiter des fichiers
    répertoires.

    public 

    class File étend l'objet 

    implémente Sérialisable, Comparable

    1. {}

    2. La classe File fournit un total de trois

      constructeurs différents pour recevoir de manière flexible des informations sur les noms de fichiers et de répertoires sous différentes formes de paramètres. Constructeur :

      1) Fichier (nom du chemin de la chaîne)
    3. Exemple : File f1=new File("FileTest1.txt"); //Créer un objet fichier f1, pointé par f1 Le Le fichier est créé dans le répertoire courant FileTest1.txt

    4. 2) Fichier (String parent, String enfant)


    Exemple : Fichier f2=new File("D:\

    dir

    1","FileTest2.txt") ;// Remarque : Le répertoire D:\dir1 doit exister au préalable, sinon une exception se produira

    3) Fichier (Fichier parent , String enfant) Exemple : File f4=new File("\dir3");
    File f5=new File(f4,"FileTest5.txt"); //Si le répertoire \dir3 n'existe pas, utilisez f4.mkdir() Créez d'abord Une fois un objet File correspondant à un fichier ou répertoire disque créé, vous pouvez obtenir les attributs du fichier ou du répertoire en appelant sa méthode.

    1) public boolean exist() Détermine si le fichier ou le répertoire existe
    2) Public boolean isFile() Détermine s'il s'agit d'un fichier ou d'un répertoire 3) Public boolean isDirectory() Détermine si c'est un fichier ou un répertoire 4) public String getName() renvoie le nom du fichier ou du répertoire

    5) public String getPath() renvoie le chemin du fichier ou du répertoire.

    6) public long length( ) Obtenez la longueur du fichier 7) public String[ ] list ( ) Enregistrez tous les noms de fichiers du répertoire dans la chaîne tableau
    et renvoyez-le. La classe File définit également certaines méthodes de gestion et d'exploitation de fichiers ou de répertoires. Les méthodes couramment utilisées sont :
    1) public boolean renameTo(File newFile); 🎜>delete
    ( ); Supprimer le fichier

    3) public boolean mkdir( ); Créer un répertoire


    Exemple :



    1. importer java.io.File

    2. importer java.io.IOException

    3. public class TestFile { 🎜>

    4. public
    5. statique

      void main(String args[]) lance IOException {

      Fichier dir =
    6. nouveau fichier(
    7. "\root");

      Fichier f1 =
    8. nouveau fichier(dir,
    9. "fileOne.txt");

      fileTwo.java");
    10.                                                                                                                               >
    11.  if (!f1.exists()) 

    12.                                                                                                                           🎜>                                                                                                     System.out.println( "f1's AbsolutePath= " + f1.getAbsolutePath());

    13. System.out.println(

      " f1Canread= " + f1.canRead());
    14. System.out.println(

      "f1's len= " + f1.length()); 🎜>
    15. String[] FL;

    16. int count

      =
    17. 0 >
    18. FL = dir.list();
    19. pour (
    20. int i =
    21. 0; i < FL.length; i++ ) {

    22. count++

    23. System.out.println( FL[i] +
    24. "est dans \root");

    25. "il y a" + compte + "fichier dans //root"); 🎜>}

    26. Description : Méthodes de classe de fichier : (1) exist() Teste si le fichier ou le répertoire spécifié existe sur le disque (2) mkdir() Crée le répertoire spécifié par l'objet fichier (répertoire monocouche) (3) createNewFile( ) Créez le fichier spécifié par l'objet fichier (4) list() renvoie toutes les chaînes de nom de fichier dans le répertoire

    27. 6. Bibliothèque de classes de flux Java.IO

    28. 1. Quatre classes de base de flux io
    29. Le package java.io contient les exigences pour le streaming des E/S de toutes les classes. Il existe quatre classes de base dans le package java.io : les classes InputStream, OutputStream et Reader et Writer, qui gèrent respectivement les flux d'octets et les flux de caractères :

    30. Flux de données de base I/ O


      Entrée/Sortie

      输入/输出

      字节流

      字符流

      输入流

      Inputstream

      Reader

      输出流

      OutputStream

      Writer

      Flux d'octets<🎜>

      Flux de caractères<🎜>

      Flux d'entrée<🎜>

      Flux d'entrée<🎜>

      Lecteur<🎜>

      Flux de sortie<🎜>

      OutputStream <🎜>

      Écrivain<🎜>


      Une variété d'autres flux en Java en sont dérivés :

      La version JDK1.4 a introduit une nouvelle bibliothèque de classes d'E/S, située dans java Dans le . nio, la nouvelle bibliothèque de classes d'E/S utilise des canaux et des tampons pour améliorer l'efficacité des opérations d'E/S.

      Dans le package java.io, java.io.InputStream représente le flux d'entrée d'octets et java.io.OutputStream représente le flux de sortie d'octets, qui se trouve au niveau supérieur du package java.io. Les deux classes sont des classes abstraites, ce qui signifie qu’elles ne peuvent pas être instanciées et doivent être sous-classées pour réaliser certaines fonctions.

      1. Classification spécifique des flux io

      1. Classification globale par type d'E/S :

      <.> 1. Mémoire 1) Lire les données depuis/vers le tableau mémoire de données : char Array Reader, CharArrayWriter, bytearrayinPutstream, bytearrayoutstream 2) Lire et écrire des données StringReader, StringWriter, StringBufferInputStream

      2.Pipe pipeline Implémenter l'entrée et la sortie du pipeline (communication inter-processus) : PipedReader, PipedWriter, PipedInputStream, PipedOutputStream
      3.File file Flux. Lire et écrire des fichiers : FileReader, FileWriter, FileInputStream, FileOutputStream
      4. Entrée et sortie de l'objet ObjectSerialization : ObjectInputStream, ObjectOutputStream
      5.DataConversion flux de données Appuyez sur le type de données de base. lecture et écriture (les données traitées sont les types de base de Java (tels que booléen, octet, entier et nombre à virgule flottante)) : DataInputStream, DataOutputStream
      6.Impression Contient une impression pratique méthodes : PrintWriter, PrintStream
      7.Buffering Mettre en cache les données lors de la lecture ou de l'écriture pour réduire le nombre d'E/S : BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream
      8.Filtering Filtrage, filtrage lorsque les données sont lues ou écrites : FilterReader, FilterWriter, FilterInputStream, FilterOutputStream via
      9.Entrée de concaténation Connectez plusieurs flux d'entrée en un seul flux d'entrée : SequenceInputStream
      10. Comptage Comptage Compter les lignes lors de la lecture des données : LineNumberReader, LineNumberInputStream
      11. >12.Conversion entre octets et caractères Convertissez le flux d'octets en flux de caractères selon certaines normes d'encodage/décodage, ou effectuez une conversion inverse (classe de conversion de Stream en Reader, Writer) : InputStreamReader, OutputStreamWriter
      2. Classification par source de données (destination) :

      1. Fichier (fichier) : FileInputStream , FileOutputStream, FileReader, FileWriter

      2 octet[] : ByteArrayInputStream, ByteArrayOutputStream 3. . Char[]: CharArrayReader, CharArrayWriter 4. String: StringBufferInputStream, StringReader, StringWriter
      5.Flux de données réseau:InputStream, OutputStream, Reader, Writer




      7. Flux d'octets InputStream /OutputStream


      1. InputStream

      Classe abstraite

      InputStream est un flux d'entrée d'octets. C'est elle-même une classe abstraite et doit s'appuyer sur ses sous-classes. Implémentant diverses fonctionnalités, cette classe abstraite est la superclasse de toutes les classes qui représentent des flux d'entrée d'octets. Les flux qui héritent de InputStream sont utilisés pour saisir des données dans le programme, et l'unité de données est l'octet (8 bits) ;

      InputStream est une classe pour saisir des données d'octets, donc la classe InputStream fournit trois méthodes de lecture surchargées. Méthodes courantes dans la classe Inputstream :
      (1) public abstract int read() : Lire un octet Les données, le retour. value est une valeur de type int avec les bits hauts remplis par 0. Si la valeur de retour = -1, cela signifie qu'aucun octet n'a été lu et que le travail de lecture est terminé.
      (2) public int read(byte b[ ]) : lit les octets de données b.length et les place dans le tableau b. La valeur de retour est le nombre d'octets lus. Cette méthode est en fait implémentée en appelant la méthode suivante
      (3) public int read(byte b[ ], int off, int len) : lit jusqu'à len octets de données du flux d'entrée et les stocke dans le décalage dans le tableau b dont le montant du décalage est désactivé.
       (4) public int available() : renvoie le nombre d'octets pouvant être lus dans le flux d'entrée. Remarque : Si l'entrée est bloquée, le thread en cours sera suspendu. Si l'objet InputStream appelle cette méthode, il ne retournera que 0. Cette méthode doit être appelée par un objet de sous-classe qui hérite de la classe InputStream pour être utile
      . (5) public long skip(long n) : ignore n octets dans le flux d'entrée. La valeur de retour est le nombre d'octets réellement ignorés.
      (6) public int close() : nous finissons d'utiliser. Enfin, le flux que nous avons ouvert doit être fermé.

      Sous-classes principales :

      1) FileInputStream utilise un fichier comme InputStream pour implémenter l'opération de lecture de fichier
      2) ByteArrayInputStream : Utiliser un tampon en mémoire comme InputStream
      3) StringBufferInputStream : Utiliser un objet String comme InputStream
      4) PipedInputStream : Implémenter le concept de pipe, principalement dans les threads Utiliser
      5) SequenceInputStream : fusionner plusieurs InputStreams en un seul InputStream

      2. OutputStreamClasse abstraite

      OutputStream fournit 3 méthodes d'écriture pour la sortie des données, ce qui correspond à InputStream.
      1. public void write(byte b[ ]) : Écrivez l'octet du paramètre b dans le flux de sortie.
      2. public void write(byte b[ ], int off, int len) : Écrivez len octets du paramètre b en commençant par offset off dans le flux de sortie.
       3. public abstract void write(int b) : convertissez d'abord int en type octet et écrivez l'octet de poids faible dans le flux de sortie.
       4. public void flush( ) : affiche toutes les données dans le tampon de données et efface le tampon.
       5. public void close() : ferme le flux de sortie et libère les ressources système liées au flux.

      Sous-classes principales :

      1) ByteArrayOutputStream : stocker les informations dans un tampon en mémoire
      2) FileOutputStream : stocker les informations enregistrées dans un fichier
      3) PipedOutputStream : implémente le concept de pipe, principalement utilisé dans les threads
      4) SequenceOutputStream : fusionne plusieurs OutStreams en un seul OutStream

      Détermination de la fin du flux : méthode read Lorsque la valeur de retour de () est -1 ; lorsque la valeur de retour de readLine() est nulle.

      3. Flux d'entrée de fichier : classe FileInputStream

      FileInputStream peut utiliser la méthode read() pour lire un octet à la fois et le renvoyer sous forme de type int, ou le lire en utilisant read( ) Dans un tableau d'octets, combien d'octets sont lus car il y a des éléments dans le tableau d'octets. Lors du processus de lecture ou d'écriture de l'intégralité du fichier, un tel tableau d'octets est généralement utilisé comme tampon, car un tel tableau d'octets joue généralement un rôle intermédiaire dans la réception des données.

      Fonction : Utiliser le fichier as a Le flux de données pour la source d'entrée de données. En d’autres termes, c’est une classe qui ouvre un fichier et lit les données du fichier en mémoire.
      Utilisation (1)
      File fin=new File("d:/abc.txt");
      FileInputStream in=new FileInputStream( fin);

      Méthode d'utilisation (2)
      FileInputStream in=new FileInputStream(“d: /abc.txt”);

      Exemple de programme :
      Afficher le contenu du programme InputFromFile.java sur le moniteur


      1. importer java.io.IOException

      2. importer java.io.FileInputStream ;  

      3. ;  

      4. public class TestFile {  

      5.     public statique void main(String args[]) lance IOException {  

      6.         essayer{      

      7.                FileInputStream rf=new   FileInputStream("InputFromFile.java");  

      8.                int n=512 ;   octet  buffer[]=nouveau  octet[n] ;     

      9.               while((rf.read(buffer,0,n)!=-1)&&(n>0)){  

      10.                    System.out.println(new String (tampon) );  

      11.                 }  

      12.                 System.out.println();  

      13.                 rf.close();  

      14.         } catch(IOException  IOe){        

      15.                System.out.println(IOe.toString());  

      16.         }  


      17.     }  


      18. }  


       

      4.文件输出流:FileOutputStream类

         作用:用来处理以文件作为数据输出目的数据流;或者说是从内存区读数据入文件

       

            FileOutputStream File或FileDescriptor对象。 
       创建一个文件流对象有两种方法: 
        方式1 : 
         Fichier   f=new  File ("d:/myjava/write.txt ");
              FileOutputStream  out= new FileOutputStream (f);
        方式2: 
        FileOutputStream out=new FileOutputStream( " d:/myjava/write.txt "); 
       方式3:构造函数将 FileDescriptor()对象作为其参数。 
        FileDescriptor() fd=new FileDescriptor(); 
        FileOutputStream f2=new FileOutputStream(fd); 
        方式4:构造函数将文件名作为其第一参数,将布尔值作为第二参数。 
        FileOutputStream f=new FileOutput Stream("d:/abc.txt",true); 
        注意: (1)文件中写数据时,若文件已经存在,则覆盖存在的文件;(2)的读/写操作结束时,应调用close方法关闭流。 

       


      程序举例:使用键盘输入一段文章,将文章保存在文件write.txt中



      1. importer java.io.IOException ;  

      2. importer java.io.FileOutputStream ;  

      3. public class TestFile {  

      4.     public  static void main(String args[]) lance IOException {  

      5.                                                                                                                                                                           🎜>

                                                                                                             ] =
      6. nouveau
      7. octet[n]

      8. count = System.in.read(buffer); FileOutputStream wf = new FileOutputStream("d:/myjava/write.txt"); 🎜>

      9. wf write(buffer, 0, count); wf.close(); 🎜>// Une fois l'opération d'écriture du flux terminée, appelez la méthode close pour fermer le flux .

      10. System.out.println(
      11. "Enregistrer dans le write.txt");
      12. } catch (IOException IOe) {

      13. System.out.println("Erreur d'écriture de fichier!");

      14. }                                                                                            >

      15. 5. Application de FileInputStream et FileOutputStream

        Utilisez le programme pour copier le fichier file1.txt dans file2. .SMS.
      16. importer java.io.File

      17. importer java.io.IOException ;

      18. importer java.io.FileOutputStream ; 🎜>importer java.io.FileInputStream ; >

      19. public
      20. statique
      21. void main(String args[])

        lance IOException {


      essayez {



      Fichier inFile =

      nouveau fichier(
        "
      1. copie

        .java") ; >

      2. FileInputStream finS =

        new FileInputStream(inFile);

      3. FileOutput Stream foutS =

        new FileOutputStream(outFile);

      4.  

        int c; finS .read()) != -1) {


      5. foutS.write(c);

      6.                                                                                                               

      7. foutS.close();

      8. } catch (IOException e) { 🎜>       System.err.println("FileStreamsTest : " + e);

      9. }


      10. 6. >
      11. L'accès à des périphériques externes prend beaucoup de temps à l'ordinateur. Plus la fréquence d'accès à la mémoire externe est élevée, plus la probabilité que le processeur soit inactif est grande. Afin de réduire le nombre d'accès à la mémoire externe, davantage de données doivent être lues et écrites en un seul accès au périphérique. À cette fin, en plus des mécanismes de lecture et d'écriture nécessaires à l'échange de données entre programmes et nœuds de flux, un mécanisme de mise en mémoire tampon doit également être ajouté. Le flux tampon signifie que chaque flux de données se voit attribuer un tampon, et un tampon est une mémoire qui stocke temporairement les données. Cela peut réduire le nombre d'accès au disque dur et améliorer l'efficacité de la transmission.


      BufferedInputStream : lors de l'écriture de données dans le flux mis en mémoire tampon, les données sont d'abord écrites dans le tampon. Lorsque le tampon est plein, le système envoie les données au périphérique de sortie en une seule fois.

      BufferedOutputStream : lors de la lecture des données du flux mis en mémoire tampon, le système lit d'abord les données du tampon. Lorsque le tampon est vide, le système lit ensuite les données du périphérique d'entrée dans le tampon.


      1) Lire le fichier en mémoire :

      Connectez BufferedInputStream à FileInputStream


      FileInputStream in= new FileInputStream ( « file1.txt » );

      BufferedInputStream bin=new BufferedInputStream( in);


      2) Écrire la mémoire dans le fichier :

      Connecter BufferedOutputStream avec FileOutputStream

      FileOutputStreamout=new FileOutputStream(“file1.txt”);

      BufferedOutputStream bin=new BufferedInputStream(out);

      3) Lire le flux d'entrée du clavier dans la mémoire

      Connectez BufferedReader au flux de données standard

      InputStreamReader sin=new InputStreamReader (System.in

      BufferedReader bin=new); BufferedReader(sin);

      public

      class ReadWriteToFile {


      public statique void main(String args[])

      lance une IOException {


      InputStreamReader sin =

      new InputStreamReader(System.in);
      1. BufferedReader bin =

        new BufferedReader(sin >
      2. FileWriter out); =
      3. nouveau FileWriter(

        "myfile.txt");

      4. BufferedWriter bout = nouveau Buffer edWriter( out); >

      5. Chaîne s;
      6. while ((s = bin.readLine()).length( ) > 0) {

      7. >
      8. }  

      9.    } 
      10. Description du programme :
        Lire les caractères du clavier et les écrire dans le fichier. Méthode de la classe BufferedReader : String readLine()
        Fonction : Lire une ligne de chaîne se terminant par un caractère de retour chariot.
        Méthodes de la classe BufferedWriter : bout.write(String s,offset,len)
        Fonction : Démarrez la chaîne s à partir du décalage du tampon et écrivez une chaîne de longueur len dans un certain à.



        8. Flux de caractères Writer/Reader

        Les caractères en Java adoptent la norme Unicode. Un caractère fait 16 bits, c'est-à-dire qu'un caractère est représenté par deux octets. À cette fin, des flux de traitement des caractères ont été introduits en JAVA.

        1. Classe abstraite de lecteur

        Une classe abstraite pour lire les flux de caractères. Les seules méthodes que les sous-classes doivent implémenter sont read(char[], int, int) et close(). Cependant, la plupart des sous-classes remplaceront certaines des méthodes définies ici pour offrir une plus grande efficacité et/ou des fonctionnalités supplémentaires.

                                                                                                                              : (1) Prenez le nom du fichier sous forme de chaîne : FileReader f=new FileReader("c:/temp.txt");

        (2) Le constructeur prend l'objet File comme son paramètre.

        File f=new file("c:/temp.txt"); FileReader f1=new FileReader(f); (3) Le constructeur prend l'objet FileDescriptor comme paramètre Descriptor() fd=new FileDescriptor ()      FileReader f2=new FileReader(fd); 2) sera un tableau de caractères comme flux d'entrée : CharArrayReader(char[], int, int)
        Lire une chaîne, le constructeur est le suivant : public StringReader( String s);

        2) CharArrayReader :
        et ByteArrayInputStream correspondant à
         
        3) StringReader :
        Correspond à StringBufferInputStream
         
        4) InputStreamReader   Lire les octets du flux d'entrée et les convertir en caractères : Public inputstreamReader( inputstream is);
         
        5) FilterReader :
        Autorise le filtrage du flux de caractères   protected filterReader(Reader r); 🎜> 6) BufferReader :
        accepte l'objet Reader comme paramètre, ajoutez-y un tampon de caractères et utilisez la méthode readline() pour lire une ligne. Public BufferReader(Reader r);
        Méthode principale :
        (1) public int read() lance IOException //Lire un caractère, la valeur de retour est lue Le caractère pris
         (2) public int read(char cbuf[]) throws IOException; /* Lit une série de caractères dans le tableau cbuf[], et la valeur de retour est le caractère lu réel Quantité*/
        (3) public abstract int read(char cbuf[],int off,int len) throws IOException
        /* Lire les caractères len, à partir de l'indice du tableau cbuf[] Storage, la valeur de retour est le nombre réel de caractères lus, cette méthode doit être implémentée par une sous-classe*/ 2 Classe abstraite Writer

        Classe abstraite pour l'écriture de flux de caractères. Les seules méthodes que les sous-classes doivent implémenter sont write(char[], int, int), flush() et close(). Cependant, la plupart des sous-classes remplaceront certaines des méthodes définies ici pour offrir une plus grande efficacité et/ou des fonctionnalités supplémentaires. Ses sous-catégories sont les suivantes :

        1) FileWrite : correspond à FileOutputStream
        Écrivez des données de type caractère dans le fichier, en utilisant l'encodage de caractères et la taille du tampon par défaut.
         Public FileWrite(file f);
         2) chararrayWrite : Correspond à ByteArrayOutputStream, en utilisant le tampon de caractères comme sortie.
          Public CharArrayWrite();
         3) PrintWrite : générer sortie formatée
          public PrintWriter(outputstream os
         4) filterWriter : utilisé pour écrire le flux de caractères de filtre
        protected FilterWriter(Writer w);
         5) PipedWriter : Correspond à PipedOutputStream

        6) StringWriter : Il n'y a pas de flux orienté octet correspondant

        Méthode principale :

        (1) public void write(int c) throws IOException; //Écrit les 16 bits inférieurs de la valeur entière c dans le flux de sortie
         (2) public void write(char cbuf[]) throws IOException; le tableau de caractères cbuf[] dans le flux de sortie
         (3) public abstract void write(char cbuf[],int off,int len) lance IOException ; //Écrit les caractères du tableau de caractères cbuf[] dans la sortie. stream Index est écrit dans le flux de sortie à partir des caractères len à la position off
         (4) public void write(String str) throws IOException //Écrit les caractères de la chaîne str dans le flux de sortie
         (5) public void write(String str,int off,int len) lance IOException ; //Écrit les caractères len à partir de l'index off dans la chaîne str vers le flux de sortie
        (6) flush( ) / /Flush le flux de sortie et affiche tous les octets mis en mémoire tampon.
         (7)close() Fermez le flux public abstract void close() lance IOException

        Différence entre InputStream et Reader Différence entre OutputStream et Writer

        Les classes InputStream et OutputStream traitent les flux d'octets, et la plus petite unité du flux de données est l'octet (8 bits)
        Reader et Writer traitent les caractères Stream , lors du traitement des flux de caractères, le problème de la conversion du codage des caractères est impliqué


        1. import java.io.* ;

        2. public class EncodeTest {

        3. >statique void readBuff(byte [] buff) lance IOException {

        4. ByteArrayInputStream in =
        5. new ByteArrayInputStream(buff);

        6. while((data=in.read())!=-
        7. 1) System.out.print(data+

          " ");

        8. System.out.println(); in.close(); }

        9. public
        10. statique
        11. void main(String args[])

          lance IOException {

        12. System.out.println ("Le codage des caractères Unicode est utilisé en mémoire :" 🎜>

        13.  

          int lowBit=c&0xFF;  int highBit=(c&

          0xFF00)>>
        14. 8; 
        15. System.out.println(

          ""+lowBit+" "+highBit

        16. String s="Bon";

        17. System.out.println("Encodage des caractères par défaut du système d'exploitation local : ");

        18. readBuff(s.getBytes());

        19. System.out.println(" Utilisation de l'encodage de caractères GBK : ");

        20. readBuff(s.getBytes("GBK"));

        21. System.out.println("Encodage des caractères UTF-8 :");

        22. readBuff(s.getBytes("UTF- 8 ")); } 



        Lecteur Le La classe peut convertir les caractères d'autres types de codage dans le flux d'entrée en caractères Unicode, puis leur allouer de la mémoire dans la mémoire
        La classe Writer peut convertir les caractères Unicode de la mémoire en caractères dans d'autres types de codage, puis écrire au milieu du flux de sortie.



        9. Sous-classes de la classe d'exception IOException

        1.public class EOFException :
        Ce type d'exception est levé lorsque la fin du fichier ou la fin du flux d'entrée est atteinte anormalement.
        2.public class FileNotFoundException :
        Exception levée lorsque le fichier est introuvable.
        3.public class InterruptedIOException :

        Ce type d'exception est levé lorsque l'opération d'E/S est interrompue.

    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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Désactivation du guide d'expérience d'entrée Win11 Désactivation du guide d'expérience d'entrée Win11 Dec 27, 2023 am 11:07 AM

Récemment, de nombreux utilisateurs de Win11 ont rencontré le problème selon lequel la boîte de dialogue d'expérience de saisie scintille toujours et ne peut pas être désactivée. Cela est en fait dû aux services système et aux composants par défaut de Win11. Nous devons d'abord désactiver les services concernés, puis désactiver ceux-ci. service d’expérience de saisie. Résolu, essayons-le ensemble. Comment désactiver l'expérience de saisie dans Win11 : Première étape, cliquez avec le bouton droit sur le menu Démarrer et ouvrez « Gestionnaire des tâches ». Deuxième étape, recherchez les trois processus « CTF Loader », « MicrosoftIME » et « Service Host : Textinput Management Service ». dans l'ordre, faites un clic droit sur "Fin de tâche" "La troisième étape, ouvrez le menu Démarrer, recherchez et ouvrez "Services" en haut. La quatrième étape, recherchez "Textinp" dedans

L'entrée Windows rencontre un blocage ou une utilisation élevée de la mémoire [Réparer] L'entrée Windows rencontre un blocage ou une utilisation élevée de la mémoire [Réparer] Feb 19, 2024 pm 10:48 PM

L'expérience de saisie Windows est un service système clé chargé de traiter les entrées utilisateur provenant de divers périphériques d'interface humaine. Il démarre automatiquement au démarrage du système et s'exécute en arrière-plan. Cependant, ce service peut parfois se bloquer automatiquement ou occuper trop de mémoire, ce qui entraîne une réduction des performances du système. Il est donc crucial de surveiller et de gérer ce processus en temps opportun pour garantir l’efficacité et la stabilité du système. Dans cet article, nous expliquerons comment résoudre les problèmes de blocage de l'expérience de saisie Windows ou entraînant une utilisation élevée de la mémoire. Le service Windows Input Experience n'a pas d'interface utilisateur, mais il est étroitement lié à la gestion des tâches système de base et des fonctions liées aux périphériques d'entrée. Son rôle est d'aider le système Windows à comprendre chaque entrée saisie par l'utilisateur.

Résoudre le problème de saisie de la barre de recherche Win11 Résoudre le problème de saisie de la barre de recherche Win11 Dec 26, 2023 pm 12:07 PM

La barre de recherche est une fonction très utile du système win11, qui peut nous aider à trouver les paramètres, fonctions et services que nous souhaitons. Cependant, certains amis ont rencontré la situation dans laquelle la barre de recherche win11 ne peut pas être saisie. Nous pouvons modifier les données pertinentes dans le registre pour résoudre le problème. Suivons l'éditeur pour le résoudre. Que faire si la barre de recherche Win11 ne peut pas être saisie 1. Tout d'abord, nous pouvons appuyer sur "win+r" sur le clavier pour afficher Run. 2. Entrez ensuite « regedit » et appuyez sur Entrée pour ouvrir l'éditeur de registre. 3. Saisissez ensuite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Expl dans le chemin ci-dessus

Comment saisir une matrice de mots Comment saisir une matrice de mots Mar 19, 2024 pm 11:00 PM

La matrice est une formule que nous utilisons et rencontrons souvent, mais savez-vous comment saisir une matrice sous forme de mot ? De nombreuses personnes n'y ont peut-être jamais été exposées et se sentiront confuses lorsqu'elles l'utiliseront. Nous allons donc partager ici avec vous comment saisir le mot matrice. J'espère que partager cette technique pourra vous apporter aide et inspiration. 1. Tout d’abord, créez et ouvrez un document Word Afin de démontrer l’opération, nous utiliserons un document vierge pour la démonstration. Comme le montre la figure ci-dessous : 2. Si nous voulons saisir une matrice, nous devons trouver le bouton [Insérer] dans la barre de menu. Ce bouton peut insérer de nombreuses options de contenu, telles que des images, etc., le tout à partir de ce menu. bar. 3. Après avoir cliqué sur [Insérer], regardez sur le côté droit des options de notre outil et vous pouvez trouver [Formule], puis cliquez sur [

Programme C pour saisir un tableau de séquences d'entiers séparés par des espaces Programme C pour saisir un tableau de séquences d'entiers séparés par des espaces Aug 25, 2023 am 11:33 AM

Énoncé du problème Écrivez un programme C qui prend des entiers séparés par des espaces comme entrée de tableau. SampleExamples entrée 12345 sortie 'Arrayelementsare-'1,2,3,4,5La traduction chinoise de l'explication est la suivante : L'entrée d'explication contient 5 entiers séparés par des espaces. Entrée 997687542356878967343423 Sortie 'Arrayelementsare-'99,76,87,54,23,56,878,967,34,34,23 La traduction chinoise d'Explication est : Explication L'entrée contient 11 entiers séparés par des espaces. Méthode 1 Dans cette méthode, nous remplacerons l'entrée par du vide

Guide pratique PHP : Comment déterminer si l'entrée contient uniquement des chiffres et des lettres Guide pratique PHP : Comment déterminer si l'entrée contient uniquement des chiffres et des lettres Mar 28, 2024 pm 03:06 PM

En programmation PHP, nous devons parfois limiter les données saisies par l'utilisateur, par exemple déterminer si l'entrée contient uniquement des chiffres et des lettres. Ceci est souvent rencontré dans le développement de projets réels, il est donc très important de maîtriser comment implémenter cette fonction. Cet article explique comment utiliser PHP pour déterminer que l'entrée ne contient que des chiffres et des lettres, et donne des exemples de code spécifiques. Pourquoi devons-nous déterminer que l’entrée ne contient que des chiffres et des lettres ? Lors du développement de sites Web, les données saisies par l'utilisateur peuvent être utilisées pour des fonctions importantes telles que les opérations de base de données et les opérations sur les fichiers si les données saisies par l'utilisateur contiennent des éléments spéciaux.

Notes et exemples : Comment saisir correctement des nombres à virgule flottante en Python Notes et exemples : Comment saisir correctement des nombres à virgule flottante en Python Feb 02, 2024 pm 06:34 PM

Notes et exemples d'entrée à virgule flottante Python En Python, les nombres à virgule flottante sont un type de données courant utilisé pour représenter des valeurs avec des parties décimales. Lors de la saisie en virgule flottante, nous devons connaître certaines choses et y prêter attention pour garantir l'exactitude et la précision de la saisie. Cet article présentera plusieurs considérations courantes et fournira un exemple de code pour approfondir la compréhension. Méthodes de saisie à virgule flottante En Python, il existe de nombreuses méthodes de saisie à virgule flottante. Les plus courantes sont les suivantes : Utilisez des nombres à virgule flottante directement pour la saisie : par exemple : x.

Comment saisir le symbole d'inégalité dans PPT Comment saisir le symbole d'inégalité dans PPT Mar 26, 2024 pm 03:21 PM

1. Ouvrez le logiciel PPT et entrez dans l'interface de fonctionnement. 2. Recherchez l'option d'insertion dans cette interface. 3. Cliquez sur l'option Insérer et recherchez l'option Symbole spécial dans son sous-menu. 4. Cliquez sur l'option Symbole spécial pour faire apparaître la boîte de dialogue Insérer un symbole spécial. 5. Recherchez l'option de symbole mathématique dans cette boîte de dialogue. 6. Cliquez sur l'option Symbole mathématique et recherchez l'option Pas égal au symbole à l'intérieur. 7. Cliquez sur cette option et vous pouvez voir que notre symbole d'inégalité a été saisi dans la zone de saisie.

See all articles