Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser les E/S Java : Fichiers, Flux et Fondamentaux Input/Output

Le package java.io contient quasiment toutes les classes nécessaires pour effectuer des entrées/sorties (E/S) en Java. Tous ces flux représentent une source d'entrée et une destination de sortie. Les flux supportent divers types de données : primitives, objets, caractères localisés, etc.

Les Flux (Streams)

Un flux est une séquence de données. Deux catégories principales :

Flux d'octets (Byte Streams)

Pour l'E/S de données binaires (8 bits). Classes principales : FileInputStream et FileOutputStream.

Exemple : copier un fichier

import java.io.*;

public class CopierFichier {
    public static void main(String args[]) throws IOException {
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = new FileInputStream("entree.txt");
            out = new FileOutputStream("sortie.txt");
            int c;
            while ((c = in.read()) != -1) {
                out.write(c);
            }
        } finally {
            if (in != null) in.close();
            if (out != null) out.close();
        }
    }
}

Flux de caractères (Character Streams)

Pour l'E/S de caractères Unicode 16 bits. Classes principales : FileReader et FileWriter. Internement, FileReader utilise FileInputStream et lit deux octets à la fois.

Exemple : copier un fichier avec caractères Unicode

import java.io.*;

public class CopierFichier {
    public static void main(String args[]) throws IOException {
        FileReader in = null;
        FileWriter out = null;
        try {
            in = new FileReader("entree.txt");
            out = new FileWriter("sortie.txt");
            int c;
            while ((c = in.read()) != -1) {
                out.write(c);
            }
        } finally {
            if (in != null) in.close();
            if (out != null) out.close();
        }
    }
}

Flux standards

Trois flux standards, similaires à STDIN/STDOUT/STDERR en C/C++ :

Exemple : lecture console jusqu'à 'q'

import java.io.*;

public class LireConsole {
    public static void main(String args[]) throws IOException {
        InputStreamReader cin = null;
        try {
            cin = new InputStreamReader(System.in);
            System.out.println("Entrez des caractères, 'q' pour quitter.");
            char c;
            do {
                c = (char) cin.read();
                System.out.print(c);
            } while (c != 'q');
        } finally {
            if (cin != null) cin.close();
        }
    }
}

Lecture et écriture de fichiers

Deux flux importants : FileInputStream et FileOutputStream.

FileInputStream

Constructeurs principaux :

// Par nom de fichier
InputStream f = new FileInputStream("C:/java/hello");

// Par objet File
File fichier = new File("C:/java/hello");
InputStream f = new FileInputStream(fichier);

Méthodes utiles :

MéthodeDescription
close()Ferme le flux, libère les ressources
read()Lit un octet, retourne -1 si fin de fichier
read(byte[] b)Lit b.length octets dans un tableau
available()Nombre d'octets lisibles sans bloquer

FileOutputStream

Crée le fichier s'il n'existe pas. Constructeurs :

// Par nom de fichier
OutputStream f = new FileOutputStream("C:/java/hello");

// Par objet File
File fichier = new File("C:/java/hello");
OutputStream f = new FileOutputStream(fichier);

Méthodes utiles :

MéthodeDescription
close()Ferme le flux
write(int b)Écrit un octet
write(byte[] b)Écrit un tableau d'octets

Exemple combiné

import java.io.*;

public class TestFluxFichier {
    public static void main(String args[]) {
        try {
            byte bWrite[] = {11, 21, 3, 40, 5};
            OutputStream os = new FileOutputStream("test.txt");
            for (int x = 0; x < bWrite.length; x++) {
                os.write(bWrite[x]);
            }
            os.close();
            
            InputStream is = new FileInputStream("test.txt");
            int size = is.available();
            for (int i = 0; i < size; i++) {
                System.out.print((char) is.read() + " ");
            }
            is.close();
        } catch (IOException e) {
            System.out.print("Exception");
        }
    }
}

Navigation de fichiers et E/S

Classes principales : File, FileReader, FileWriter.

Répertoires en Java

Un répertoire est un File contenant une liste de fichiers et répertoires.

Créer des répertoires

Exemple

import java.io.File;

public class CreerRepertoire {
    public static void main(String args[]) {
        String dirname = "/tmp/user/java/bin";
        File d = new File(dirname);
        d.mkdirs();  // crée toute l'arborescence
    }
}

Java gère automatiquement les séparateurs de chemin (/ sur Windows aussi).

Lister un répertoire

import java.io.File;

public class LireRepertoire {
    public static void main(String[] args) {
        File file = new File("/tmp");
        String[] paths = file.list();
        
        if (paths != null) {
            for (String path : paths) {
                System.out.println(path);
            }
        }
    }
}

Résultat exemple :

test1.txt
test2.txt
LireRepertoire.java
LireRepertoire.class

Java

  1. Maîtriser l'entrée/sortie en C : scanf() et printf() expliqués
  2. Entrées/sorties de fichiers Python : maîtriser les opérations sur les fichiers
  3. Variables et littéraux en Java : Guide complet
  4. Maîtriser l'entrée/sortie Java : Afficher, lire et formater vos données
  5. Classes et objets en Java : Guide pratique
  6. Classes et méthodes abstraites en Java : guide complet
  7. Maîtriser les classes imbriquées et internes en Java : types, exemples et bonnes pratiques
  8. Java throw vs throws : maîtriser la gestion d'exceptions avec exemples pratiques
  9. Maîtriser Java Scanner : Guide complet avec exemples pratiques