Exercices sur les Entrées/Sorties (I/O) en Java
Section 1 : Questions de cours (10 questions)
- Qu'est-ce qu'un flux (Stream) en Java, et quels sont les deux types de flux principaux ?
- Décrivez les étapes de l'utilisation d'un flux pour lire ou écrire des données dans un fichier.
- Quelle est la différence entre un flux binaire (Byte Stream) et un flux de caractères (Character Stream) ? Donnez un exemple de classes pour chacun.
- Expliquez comment la classe
BufferedReader
est utilisée pour lire un fichier texte ligne par ligne. Quelle est l'importance de la méthodereadLine()
? - Quelles sont les différentes méthodes offertes par la classe
Scanner
pour lire et analyser des données provenant d'un fichier ? - Quelles sont les exceptions courantes liées aux opérations d'I/O en Java, et comment pouvez-vous les gérer dans un programme ?
- Quel est le rôle de la classe
PrintWriter
dans l'écriture de fichiers ? Comment est-elle utilisée avec unBufferedWriter
? - Quelle est la différence entre les flux
System.in
,System.out
, etSystem.err
en Java ? - Comment la méthode
printf()
est-elle utilisée pour formater la sortie écrite dans un fichier ? Donnez un exemple de son utilisation avec des variables. - Expliquez comment importer et utiliser les classes du package
java.io
dans un programme Java. Pourquoi est-il parfois nécessaire d'importerjava.util.Scanner
?
Section 2 : Analyse d'un code Java (10 questions)
Considérez le code suivant, qui lit un fichier texte et affiche certaines lignes conditionnellement :
import java.io.*;
public class FileReaderExample {
public static void main(String[] args) {
String filename = "C:\\Temp\\TestIn.txt";
try {
BufferedReader reader = new BufferedReader(new FileReader(filename));
String line;
while ((line = reader.readLine()) != null) {
if (line.startsWith("#")) {
System.out.println("Commentaire détecté : " + line);
} else {
System.out.println("Contenu : " + line);
}
}
reader.close();
} catch (IOException e) {
System.err.println("Erreur lors de la lecture du fichier : " + e.getMessage());
}
}
}
- Quel est le rôle de la classe
BufferedReader
dans ce programme ? Pourquoi est-elle préférée àFileReader
seul ? - À quoi sert la méthode
readLine()
dans ce programme ? Quelle est sa sortie quand le fichier est vide ? - Qu'arrive-t-il si le fichier spécifié dans
filename
n'existe pas ? Quel type d'exception est levé et comment est-elle gérée dans le programme ? - Pourquoi la méthode
close()
est-elle nécessaire après la lecture du fichier ? Que se passerait-il si elle était omise ? - Expliquez la condition
line.startsWith("#")
. Que signifie cette ligne dans le contexte de ce programme ? - Que se passe-t-il si une ligne vide est rencontrée dans le fichier ? Comment le programme la gère-t-il ?
- Dans ce programme, quelles sont les alternatives à l'utilisation de
System.err
pour afficher les messages d'erreur ? - Modifiez le programme pour que les lignes non commentées soient également écrites dans un nouveau fichier texte
output.txt
. - Pourquoi le bloc
try-catch
est-il utilisé ici ? Quelle est la différence entre une exceptionIOException
et une autre exception Java commeNullPointerException
? - Comment modifieriez-vous ce programme pour utiliser un
Scanner
au lieu deBufferedReader
pour lire les lignes du fichier ?
Section 3 : Écriture d'un code Java (10 questions)
- Écrivez un programme Java qui demande à l'utilisateur de saisir un nom de fichier, puis affiche tout le contenu du fichier ligne par ligne à l'écran. Utilisez un
BufferedReader
pour lire le fichier. - Écrivez un programme Java qui écrit les lignes "Hello World" et "Ceci est un test" dans un fichier texte nommé
output.txt
en utilisant la classePrintWriter
. - Créez un programme Java qui lit les entrées clavier et les enregistre dans un fichier texte nommé
input.txt
jusqu'à ce que l'utilisateur entre la chaîne "exit". Utilisez unBufferedWriter
pour écrire dans le fichier. - Écrivez un programme Java qui lit un fichier texte et compte le nombre total de lignes qu'il contient.
- Modifiez un programme Java pour lire un fichier texte et afficher uniquement les lignes qui contiennent plus de 20 caractères. Utilisez
BufferedReader
. - Écrivez un programme qui lit un fichier CSV (Comma-Separated Values) ligne par ligne, divise chaque ligne en colonnes (en utilisant
split()
), et affiche le contenu de chaque colonne. - Écrivez un programme Java qui lit un fichier texte et calcule le nombre de mots dans le fichier. Utilisez
Scanner
pour lire les lignes et les mots. - Créez un programme qui lit le contenu d'un fichier texte et remplace toutes les occurrences d'un mot spécifique par un autre mot. Les mots doivent être fournis par l'utilisateur.
- Écrivez un programme Java pour vérifier si un fichier spécifié existe avant d'essayer de le lire. Si le fichier existe, affichez son contenu, sinon affichez un message d'erreur.
- Créez un programme Java qui copie le contenu d'un fichier source à un fichier de destination en utilisant
FileInputStream
etFileOutputStream
.