CodeGym /Cours /JAVA 25 SELF /Découverte des fichiers et des images

Découverte des fichiers et des images

JAVA 25 SELF
Niveau 12, Leçon 3
Disponible

1. Introduction

En programmation, il faut presque toujours travailler avec des fichiers. Des exemples parlants pour tous : enregistrer le texte d’une note, la progression d’un jeu, copier une image ou lire des paramètres depuis un fichier de configuration.

En Java, il existe des outils modernes et pratiques : Path et Files du package java.nio.file. Ils permettent, en quelques lignes de code, d’ouvrir un fichier, lire son contenu, écrire du texte ou même copier une image.

Chemin d’accès au fichier (Path)

Un fichier se trouve toujours quelque part sur le disque, et pour y accéder, il faut préciser un chemin. Pour cela, Java propose la classe Path, et vous pouvez créer un nouvel objet à l’aide de la méthode Path.of().

Path path = Path.of("hello.txt"); // chemin relatif
Path absPath = Path.of("C:/Users/Me/image.png"); // chemin absolu (Windows)

Explications :

  • Le chemin relatif cherche le fichier dans le dossier courant du projet (par exemple, "hello.txt").
  • Un chemin absolu indique l’adresse complète : disque, dossiers et nom du fichier.

2. Travailler avec des fichiers texte

Du point de vue de Java, tous les fichiers se répartissent en 2 types — texte et binaire. Si le contenu peut être représenté comme un texte compréhensible par un humain, c’est un fichier texte. Dans tous les autres cas, c’est simplement un ensemble d’octets (fichier binaire).

Écrire du texte dans un fichier — writeString

Pour écrire une chaîne dans un fichier, on utilise la méthode writeString.

Path p = Path.of("hello.txt");
Files.writeString(p, "Bonjour, fichier !");

Que s’est-il passé ici :

  1. nous créons un objet Path qui pointe vers "hello.txt" ;
  2. nous écrivons la chaîne dedans avec la méthode writeString ;
  3. si le fichier n’existait pas, il sera créé automatiquement.

Ainsi, vous pouvez facilement enregistrer des notes ou des messages dans un fichier texte.

Lire du texte depuis un fichier — readString

La méthode readString permet de charger tout le fichier d’un coup dans une chaîne.

Path p = Path.of("hello.txt");
String content = Files.readString(p);
System.out.println(content);

La variable content contient désormais le contenu du fichier. C’est pratique pour les petits fichiers : configurations, textes, documents JSON.

3. Travailler avec des fichiers binaires

Tous les fichiers ne sont pas du texte. Les images, la musique, les archives — ce sont des ensembles d’octets. Pour les manipuler, il existe les méthodes write et readAllBytes.

Écrire des octets dans un fichier — write

La méthode write() permet d’écrire dans un fichier un tableau d’octets. On l’appelle aussi un tampon (byte buffer).

byte[] data = {65, 66, 67, 68}; // caractères A B C D
Files.write(Path.of("letters.bin"), data);

Ici, nous avons écrit dans le fichier un tableau d’octets. Si vous ouvrez le fichier comme du texte, il contiendra les lettres "ABCD".

Lire des octets — readAllBytes

Pour récupérer le contenu du fichier sous forme de tableau d’octets, utilisez la méthode readAllBytes.

byte[] buffer = Files.readAllBytes(Path.of("letters.bin"));

// afficher le tableau d'octets lu à l'écran
for (byte b : buffer) 
{
    System.out.print((char)b + " ");
}

À l’écran, vous verrez :

A B C D

Cette approche est utilisée pour travailler avec n’importe quel fichier binaire — images, documents, musique.

4. Scénarios courants de manipulation de fichiers

Le scénario de travail avec les fichiers le plus courant est sans doute la copie d’un fichier.

Copie de fichiers

Pour copier un fichier, il suffit de le lire dans un tableau d’octets et d’écrire ce tableau dans un autre fichier.

Path in = Path.of("logo.png");
Path out = Path.of("logo_copy.png");

byte[] bytes = Files.readAllBytes(in);
Files.write(out, bytes);

De cette manière, vous pouvez copier des images, des documents et tout autre fichier sans vous soucier de leur format.

Vérification de l’existence et de la taille

Il faut parfois s’assurer qu’un fichier existe et connaître sa taille. Pour cela, utilisez les méthodes exists et size.

Path p = Path.of("hello.txt");
if (Files.exists(p)) 
{
    long size = Files.size(p);
    System.out.println("Fichier trouvé, taille : " + size + " octets");
} 
else 
{
    System.out.println("Fichier introuvable !");
}

C’est utile pour le diagnostic : vous saurez exactement si vous travaillez avec le bon fichier.

5. Exceptions

Les opérations sur les fichiers peuvent échouer : fichier absent, droits d’accès insuffisants, disque plein ou fichier occupé par un autre programme. Il faut donc entourer le travail avec le disque d’un try-catch, ou bien propager les exceptions vers l’extérieur à l’aide de throws.

try 
{
    String content = Files.readString(Path.of("hello.txt"));
    System.out.println(content);
} 
catch (IOException e) 
{
    System.out.println("Erreur de lecture : " + e.getMessage());
}

Ainsi, le programme ne « plantera » pas, mais informera proprement l’utilisateur de ce qui s’est passé. Si nécessaire, vous pouvez propager l’exception IOException plus haut dans la pile depuis une méthode à l’aide du mot-clé throws.

1
Mission
JAVA 25 SELF, niveau 12, leçon 3
Bloqué
Écriture d'une chaîne dans un fichier texte
Écriture d'une chaîne dans un fichier texte
1
Mission
JAVA 25 SELF, niveau 12, leçon 3
Bloqué
Lecture de texte depuis un fichier et affichage à l'écran
Lecture de texte depuis un fichier et affichage à l'écran
1
Mission
JAVA 25 SELF, niveau 12, leçon 3
Bloqué
Écriture et lecture de données binaires
Écriture et lecture de données binaires
1
Mission
JAVA 25 SELF, niveau 12, leçon 3
Bloqué
Copier un fichier
Copier un fichier
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION