Les entrées sorties en java

publicité
Les entrées sorties en java

Utilisation de la notion de flux



Accès séquentielle à des objets en lecture
ou en écriture
Indépendant du type d'entrées-sorties:
fichiers, buffers, pipes,
sockets, etc
1
Les flux en entrées

C'est un canal de communication entre
une source et un programme «lecteur »
2
Les flux de sorties

Un flux de sortie représente un canal de
communication entre un programme
«écrivain » et un destinataire
3
Les catégories de flux


Les flux par octets: codage direct des données
byte à byte
Les flux caractères: formats textuels (un
caractère est codé sur 2 bytes (format unicode)
4
Les modes d'accès : principe

Ecrire/lire c'est faire transiter des flux d'octets ou
de caractères dans des tuyaux

2 tailles de tuyaux: les tuyaux pour un octet, les
tuyaux pour un caractère


Octets: les flux finissent en outputStream ou
inputStream (ex: FileInputStream)
Caractères: les flux finissent en Reader ou
Writer (ex: FileReader, BufferedWriter)
Flux d'octets ou de caractères
5
Les types de flux

Deux sens de fonctionnement
 En lecture ("aspiration"):
xxxInputStream, xxxReader
 En écriture ("envoi"):
xxxOutputStream, xxxWriter
6

Les types de flux
Différents types de tuyaux:
 Les tuyaux qui se trouvent près des
éléments d'entrée/sortie (File, Socket,
Pipe, String, etc.)
 Les tuyaux de haut niveau qui
implémentent des services
(BufferedReader, FilterOutputStream,
ObjectInputStream, DataOutputStream...)
 Les tuyaux de conversion:
InputStreamReader (o -> c),
OutputStreamWriter (c -> o)…`
7
Les classes flux d'octets

En entrée
8
Les classes flux d'octets

En sortie
9
Les classes flux de caractères

En entrée
10
Les classes flux de caractères

En sortie
11
exemple

Copie de fichier (méthode non efficace)
public class Copy
{
public static void main(String[] args) throws IOException
{
File inputFile = new File("fichier_entree.txt");
File outputFile = new File("fichier_sortie.txt");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
}
}
12
Exemple (2)

Copie de fichier
(méthode avec un tampon)
public class Copy
{
public static void main(String[] args) throws IOException
{
File inputFile = new File("fichier entree.txt");
File outputFile = new File("fichier sortie.txt");
FileReader in = new BufferedR eader(new FileReader(inputFile));
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
}
}
13
Exemple (3)

Utilisation des dataOutputStream
DataOutputStream out = new DataOutputStream(new
FileOutputStream("facture.txt"));
double[] prices = { 19.99,
9.99, 15.99, 3.99, 4.99 };
int[] units =
{ 12,
8,
13,
29,
50 };
String[] descs = {
"Java T-shirt",
"Java Mug",
"Duke Juggling Dolls",
"Java Pin",
"Java Key Chain" };
for (int i = 0; i < prices.length; i ++)
{
out.writeDouble(prices[i]);
out.writeChar('\t');
out.writeInt(units[i]);
out.writeChar('\t');
out.writeChars(descs[i]);
out.writeChar('\n');
}
out.close();
14
La classe Scanner

Paquetage java.util

Lecture de tout type simple de données




Entier, caractère, réel,...
Lecture d'une ligne à la fois
Test de présence dans le flux du type
présumé hasInt()
Test de présence de données dans le flux

hasNext()
15
Les flux standards




static PrintStream out
Static inputStream in
Static PrintStream err
Accessible à partir de la classe System
qui est non instanciable
16
Téléchargement