public static String getString(String prompt)
 System.out.print(prompt + " ");
 return input.nextLine();
Gestion des répertoires et des fichiers.
Type de chemin.
Un chemin est une instance de la classe codice_39 et peut désigner :
Résolution de chemin.
Pour construire une instance de codice_39 à partir d'un chemin, utilisez le constructeur codice_45 :
 File f = new File("/home/fr-wikibooks-org/mes_fichiers/fichier.txt"); // sous Linux
Il peut s'agir d'un chemin relatif :
 File f = new File("source\\fichiers\\exemple.txt"); // sous Windows
Pour créer un chemin relatif à celui d'un répertoire, utilisez le constructeur codice_46 :
 File f_dir = new File("/app/test/fichiers"); // Répertoire de base
 File f_config = new File(f_dir, "premier/info.cfg"); // Relatif au répertoire de base
 // --> /app/test/fichiers/premier/info.cfg
 File f_autre = new File(f_dir, "../autre/alternative.cfg"); // Relatif au répertoire de base
 // --> /app/test/fichiers/../autre/alternative.cfg
 // C'est-à-dire /app/test/autre/alternative.cfg
Pour obtenir le chemin absolu, appelez la méthode codice_47 pour l'obtenir sous la forme d'un objet codice_48, ou la méthode codice_49 pour l'obtenir sous la forme d'une chaîne de caractères codice_50.
 File f_autre = new File(f_dir, "../autre/alternative.cfg"); // Relatif au répertoire de base
 // --> /app/test/fichiers/../autre/alternative.cfg
 f_autre = f_autre.getAbsoluteFile()
 // --> /app/test/autre/alternative.cfg
 // Répertoire courant :
 File f_curdir = new File(".").getAbsoluteFile();
Pour obtenir le chemin canonique, utilisez la méthode codice_51 pour l'obtenir sous la forme d'un objet codice_48, ou la méthode codice_53 pour l'obtenir sous la forme d'une chaîne de caractères codice_50.
Le chemin canonique résout les liens symboliques et les deux méthodes peuvent donc lancer une exception en cas d'erreur (lien cassé).
Lister les fichiers d'un répertoire.
Pour les chemins désignant un répertoire, la méthode codice_55 retourne un tableau des fichiers contenu dans le répertoire.
Ce tableau n'inclut pas d'entrée pour codice_56 (répertoire courant) ni pour codice_57 (répertoire parent).
Lister les chemins racines.
La méthode statique codice_58 retourne un tableau des chemins racines du système de fichiers.
Pour Linux, cette méthode retourne le répertoire racine codice_59.
Pour Windows, cette méthode retourne le répertoire racine codice_60 de chaque lecteur disponible (ex: codice_61 codice_62 ...).
Cette méthode est particulièrement utile pour créer un sélecteur de fichiers utilisant un arbre de répertoires.
Création d'un répertoire.
Pour créer un dossier :
import java.io.File;
File mon_dossier = new File("mon_chemin");
mon_dossier.mkdir();
Pour créer un dossier récursivement (avec ses parents), remplacer codice_63 par codice_64.
Création d'un fichier temporaire.
Pour créer un fichier temporaire, utilisez la méthode statique codice_65.
La méthode retourne le chemin du fichier créé ; le nom contient un identifiant unique.
La variante codice_67 équivaut à appeler la même méthode avec codice_66 pour codice_69 : elle crée un fichier dans le répertoire temporaire du système.
La suppression n'est pas gérée par cette méthode.
Utilisez la méthode codice_70 sur le fichier créé pour qu'il soit supprimé automatiquement à la fin de l'application.
Il n'est pas possible d'annuler la requête de suppression de fichier en fin d'exécution.
Exemple :
 File tempfile = File.createFile("debuglog", ".tmp"); // Dans le répertoire temp du système
 tempfile.deleteOnExit(); // Suppression du fichier à la fin de l'exécution
 // ... utiliser le fichier temporaire
Copie.
Pour copier un dossier (avec son contenu) :
import org.apache.commons.io.FileUtils;
FileUtils.copyDirectory('chemin/source', 'chemin/destination');
Sans la bibliothèque Apache :
public static boolean recursiveCopy(File f_from, File f_to)
 // Récupérer les attributs du fichier/répertoire source
 long time = f_from.lastModified();
 boolean cr = f_from.canRead();
 boolean cw = f_from.canWrite();
 boolean cx = f_from.canExecute();
 if (f_from.isDirectory())
 f_to.mkdirs();
 File[] files = f_from.listFiles();
 for(File ff : files)
 File ft = new File(f_to, ff.getName());
 if (!recursiveCopy(ff, ft)) return false;
 else if (f_from.isFile()) // Test permettant d'éviter la copie de certains fichiers spéciaux
 File p = f_to.getParentFile();
 if (!p.exists()) p.mkdirs();
 try
 InputStream in = new FileInputStream(f_from);
 try
 OutputStream out = new FileOutputStream(f_to);
 byte[] b = new byte[8192];
 int len;
 try
 while ((len = in.read(b))>0)
 out.write(b, 0, len);
 catch (IOException e)
 // Mettre les attributs sur le fichier/répertoire destination
 f_to.setReadable(cr);
 f_to.setExecutable(cx);
 f_to.setWritable(cw);
 f_to.setLastModified(time);
 return true;
Suppression.
Pour un répertoire vide, ou un fichier :
import java.io.File;
File mon_chemin = new File("mon_chemin");
mon_chemin.delete();
Pour un répertoire vide ou non, ou un fichier :
import java.io.File;
import org.apache.commons.io.FileUtils;
File mon_dossier = new File("mon_chemin");
FileUtils.deleteQuietly(mon_dossier);
Sans la bibliothèque Apache :
public static boolean recursiveDelete(File f)
 if (f.isDirectory())
 File[] files = f.listFiles();
 for(File ff : files)
 if (!recursiveDelete(ff)) return false;
 return f.delete();
Exemples concrets de flux.
Fichiers textes.
Pour lire un fichier texte plusieurs fois en reprenant du début, il faut introduire une variable de type codice_71, uniquement pour repositionner le lecteur :
import java.io.*;
import java.nio.channels.FileChannel;
public class LireDeuxFois {
 public static void main(String[] args) throws Exception {
 if (args.length == 1) {
 FileInputStream fis = new FileInputStream(args[0]);
 FileChannel fc = fis.getChannel();
 int cc;
 // Première lecture
 while ((cc = fis.read()) != -1) {
 System.out.println((char)cc);
 fc.position(0); // Reset
 // Deuxième lecture
 while ((cc = fis.read()) != -1) {
 System.out.println((char)cc);
 fis.close();
Images.
Le paquetage codice_72 contient des classes permettant la lecture et l'écriture d'images en utilisant des flux d'entrées-sorties génériques (codice_10 et codice_20), des flux d'images (codice_75 et codice_76) ou simplement un chemin de fichier (codice_39).
Exemple convertissant une image GIF en PNG :
import javax.imageio.ImageIO;
import java.io.File;
// Lecture d'une image à partir d'un fichier :
Image image = ImageIO.read(new File("Icone1.gif"));
// Écriture d'une image dans un fichier :
ImageIO.write(image, "png", new File("Icone2.png"));
La classe codice_78 possède également une méthode codice_79 acceptant un flux de classe codice_10.
Ce flux peut être créé à partir d'une connexion réseau ou de ressources locales au paquetage d'une classe de l'application.
La lecture crée un fichier temporaire dans le répertoire par défaut (méthode codice_81 de la classe codice_82).
Il est possible d'obtenir une exception avec le message codice_83 si la création échoue.
Si l'application a été lancée par une autre application Java, le problème peut venir de la non transmission des variables d'environnement du système au processus créé, car celles-ci contiennent le chemin du répertoire des fichiers temporaires. Par défaut, sous Windows, le répertoire codice_84 est utilisé mais l'écriture n'y est pas autorisé.
Consoles.
Les applications sur la plupart des systèmes d'exploitation (Windows, Linux, Android, ...) sont associées à trois flux standards connectés par défaut à la console, mais pouvant être redirigés depuis le shell ou par une application vers un autre flux (un fichier, un flux d'une autre application, ...).
En java ces flux sont disponibles dans la classe codice_85 :