Maison  >  Article  >  Java  >  Introduction détaillée aux opérations sur les fichiers et au contenu du flux IO en Java

Introduction détaillée aux opérations sur les fichiers et au contenu du flux IO en Java

不言
不言avant
2018-10-12 15:55:452825parcourir

Cet article vous apporte une introduction détaillée aux opérations sur les fichiers et au contenu du flux IO en Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Avant-propos

  1. À quoi sert un flux : Pour enregistrer des données de manière permanente.

  2. Les flux IO sont utilisés pour gérer la transmission de données entre appareils (téléchargement et téléchargement de fichiers)

  3. Java fonctionne sur les données via des flux.

  4. Les objets Java utilisés pour faire fonctionner les flux sont dans le package IO.

  5. L'apprentissage du système Java IO consiste essentiellement à lire et à écrire des fichiers.

Classe File

  1. File est utilisé en Java pour extraire un fichier. Qu'il s'agisse d'un fichier ordinaire ou d'un répertoire, il peut traiter. un objet Fichier.

  2. Le fichier n'est qu'une représentation abstraite d'un fichier ou d'un répertoire sur le disque. En interne, il repose en fait sur une classe de système de fichiers local indépendante de la plate-forme.

  3. Le fichier ne peut effectuer aucune opération de lecture ou d'écriture sur le contenu du fichier qu'il représente (c'est ce que font les flux).

  4. Méthodes membres :

    (1)创建功能:
        【1】public boolean createNewFile()
        【2】public boolean mkdir()
        【3】public boolean mkdirs()
    (2)删除功能:public boolean delete()
    (3)重命名功能:public boolean renameTo(File dest)
    (4)判断功能:
        【1】public boolean isDirectory()
        【2】public boolean isFile()
        【3】public boolean exists()
        【4】public boolean canRead()
        【5】public boolean canWrite()
        【6】public boolean isHidden()
    (5)获取功能:
        【1】public String getAbsolutePath()
        【2】public String getPath()
        【3】public String getName()
        【4】public long length()
        【5】public long lastModified()
    (6)高级获取功能:
        【1】public String[] list()
        【2】public File[] listFiles()

Classification des flux

  1. Selon les différents flux de données directions Divisé en flux d’entrée et flux de sortie.

  2. est divisé en flux d'octets et flux de caractères selon les différents types de données traitées :

(1) Flux de caractères : Comme son nom suggère que ce flux ne peut traiter que les caractères, mais il traite les caractères très rapidement.
(2) Flux d'octets : il peut traiter tous les fichiers stockés en unités de bits, ce qui signifie qu'il peut traiter tous les fichiers, mais il n'est pas aussi rapide que le flux de caractères dans le traitement des caractères.

  1. Classe de base abstraite du flux de caractères :

(1) Lecteur : classe abstraite du flux d'entrée de caractères, tous L'implémentation du flux d'entrée de caractères est sa sous-classe
(2) Writer : la classe abstraite du flux de sortie de caractères, l'implémentation de toutes les classes de sortie de caractères est sa sous-classe

  1. Classe de base abstraite du flux d'octets :

(1) InputStream : classe abstraite du flux d'entrée d'octets, la classe parent de tous les flux d'entrée d'octets (2) OutputStream : La classe abstraite du flux de sortie d'octets, qui est la super classe de toutes les classes qui génèrent des flux d'octets

  1. Une sous-classe dérivée du flux de caractères Reader :

    (1)CharArrayReader
    (2)BufferedReader/LineNumberReader
    (3)FilterReader
    (4)InputStreamReader/FileReader
  2. Sous-classe dérivée de Writer de flux de caractères :

    (1)BufferedWriter
    (2)CharArrayWriter
    (3)FilterWriter
    (4)OutputStreamWriter/FileWriter
    (5)PrintWriter
    (6)StringWriter
  3. octets Sous-classes dérivées de Stream InputStream :

    (1)FileInputStream
    (2)ObjectInputStream
    (3)FilterInputStream/BufferedInputStream/DataInputStream/PushbackInputStream
    (4)SequenceInputStream
    (5)ByteArrayInputStream
    (6)StringBufferInputStream)
  4. Flux d'octets Classes dérivées de OutputStream :

    (1)ByteArrayOutputStream
    (2)FileOutputStream
    (3)FilterOutputStream/BufferedOutputStream/DataOutputStream
    (4)ObjectOutputStream
  5. Optimiser la lecture et l'écriture : flux de tampon d'octets

    Le flux d'octets lit et écrit un tableau à la fois beaucoup plus rapidement que la lecture et l'écriture d'un octet à la fois. C'est l'effet tampon de l'ajout d'un tableau.
  1. Lors de la lecture du flux d'entrée d'octets du fichier, il est lu directement à partir du même flux d'octets.
  2. Le flux d'octets étant lu avec le matériel (support de stockage), il est plus lent.
  3. Lorsque le processeur a besoin d'utiliser des données, il sera limité par la vitesse lente des E/S matérielles lors de la lecture des données via read() et read(byte[]).
  4. La vitesse de lecture et d'écriture entre le processeur et la mémoire est plus de 10 fois plus rapide que les E/S matérielles, de sorte qu'une optimisation du tampon peut être établie dans la mémoire.
  5. Idées pour optimiser la lecture et l'écriture :
  6. (1) Créer un tampon en mémoire
(2) Mettre d'abord le support de stockage in Les octets sont lus dans le tampon

(3) Lorsque le CPU a besoin de données, elles sont lues directement à partir du tampon
(4) Le tampon doit être suffisamment grand, et après avoir été lu, la fonction fill() est déclenché pour lire automatiquement à partir du tampon. Les octets sont lus à partir du contenu des octets du fichier du média et stockés dans un tableau de tampons.

Flux de conversion

    Le flux de conversion est un pont entre le flux d'octets et le flux de caractères, qui peut convertir le flux d'octets en flux de caractères.
  1. Le principe est d'ajouter des opérations d'encodage et de décodage sur la base de flux d'octets.
  2. Flux de caractères = flux d'octets + table d'encodage
  3. FileReader et FileWriter sont en fait des flux d'octets en bas, mais ils nécessitent une configuration supplémentaire Encoder et le décodeur, la couche inférieure utilise des octets pour lire les données et les convertit en caractères via le décodeur, ou convertit les caractères en octets via l'encodeur puis les sort.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer