0% ont trouvé ce document utile (0 vote)
9 vues14 pages

Entrées-sorties en Java : Guide complet

Le document présente les classes et interfaces liées aux entrées-sorties en Java, notamment celles du package java.io. Il fournit des exemples d'utilisation des flux standards, de la classe File, ainsi que des méthodes pour copier des fichiers et filtrer des lectures. Des exemples de code illustrent la manipulation des fichiers et des répertoires, ainsi que la gestion des exceptions associées.

Transféré par

biyaandre
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues14 pages

Entrées-sorties en Java : Guide complet

Le document présente les classes et interfaces liées aux entrées-sorties en Java, notamment celles du package java.io. Il fournit des exemples d'utilisation des flux standards, de la classe File, ainsi que des méthodes pour copier des fichiers et filtrer des lectures. Des exemples de code illustrent la manipulation des fichiers et des répertoires, ainsi que la gestion des exceptions associées.

Transféré par

biyaandre
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Entrées-sorties en Java

Package [Link]
Classes
— class File
— final class FileDescriptor
— abstract class InputStream
— class ByteArrayInputStream
— class FileInputStream
— class FilterInputStream
— class BufferedInputStream
— class DataInputStream (interface DataInput)
— class LineNumberInputStream
— class PushbackInputStream
— class PipedInputStream
— class SequenceInputStream
— class StringBufferInputStream

— abstract class OutputStream


— class ByteArrayOutputStream
— class FileOutputStream
— class FilterOutputStream
— class BufferedOutputStream
— class DataOutputStream (interface DataOutput)
— class PrintStream
— class PipedOutputStream

— class RandomAccessFile (interfaces DataInput,DataOutput)

— class StreamTokenizer

Interfaces
Interface DataInput
Interface DataOutput
Interface FilenameFilter

Exceptions
2.27 Class EOFException
2.28 Class FileNotFoundException
2.29 Class IOException
2.30 Class InterruptedIOException
2.31 Class UTFDataFormatException

©A. Le Grand Université de Genève 1


Entrées-sorties en Java

Constructeurs
fichiers d’entrée
FileInputStream fis=new FileInputStream("toto");
DataInputStream d=new DataInputStream(fis);

fichiers de sortie
File f= new File(“toto”);
FileOutputStream fos=new FileInputStream(f);
DataOutputStream d=new DataOutputStream(fos);

flots standards
public final class [Link] extends [Link]{
// Fields
public static PrintStream err;
public static InputStream in;
public static PrintStream out;
// Methods
public static void arraycopy(Object src, int src_pos,
Object dst, int dst_pos, int length);
public static long currentTimeMillis();
public static void exit(int status);
public static void gc();
public static Properties getProperties();
public static String getProperty(String key);
public static String getProperty(String key, String def);
public static SecurityManager getSecurityManager();
public static void load(String filename);
public static void loadLibrary(String libname);
public static void runFinalization();
public static void setProperties(Properties props);
public static void setSecurityManager(SecurityManager s);
}

[Link]([Link]().getName());
résultat : [Link]

©A. Le Grand Université de Genève 2


Entrées-sorties en Java

exemples d’utilisation des flots


standards

import [Link].*;
public class lecture {
static public void main(String[] args)
{int x=0;
[Link]("saisie :");
[Link]();
try
{x=[Link]();
[Link]([Link]()+
" car. sont en attente.");
}
catch (IOException e)
[Link]([Link]());

[Link]("int lu :" + x);


[Link]("car. lu :" + (char) x);
}
}

2 exemples d’exécution

fin de saisie avec CTRL-D ou CTRL-Z fin de saisie avec CR

>java lecture >java lecture


saisie :ABCD3 car. sont en attente. saisie :ABCD
int lu :65 4car. sont en attente.
car. lu :A int lu :65
car. lu :A

©A. Le Grand Université de Genève 3


Entrées-sorties en Java

exemples d’utilisation des flots standards

import [Link].*;
public class majuscule2 {
static public void main(String[] args)
{int x=0;
[Link]("saisie :");
[Link]();
try{
do
{x=[Link];
[Link]([Link]((char) x));}
while ([Link]()>0);
[Link]([Link]()+
" car. sont en attente.");}
catch (IOException e)
[Link]([Link]());
} //main
} // class

2 exemples d’exécution

fin de saisie avec CTRL-D ou CTRL-Z fin de saisie avec CR


java majuscule2 java majuscule2
saisie :abcdeA saisie :abcde
B A
C B
D C
E D
0 car. sont en attente. E

0 car. sont en attente.

©A. Le Grand Université de Genève 4


Entrées-sorties en Java

variables d’environnement
programme
import [Link].*;
import [Link];
public class demoProperties {
static public void main(String[] args)
{Properties p=[Link]();
[Link]([Link]);}
}

exemple d’exécution :
-- listing properties --
[Link]=/unige/java/SUNWjws/JDK/bin/..
[Link]=1.0.2ss:08/01/96-23:00
[Link]=/
[Link]=

[Link]=Sun Microsystems Inc.


[Link]=legrand
[Link]=sparc
[Link]=Solaris
[Link]=[Link]
[Link]=/user/u3/legrand
[Link]=.:/unige/java/SUNWjws/JDK/bin/../clas...
[Link]=45.3
[Link]=2.x
[Link]=:[Link]=/user/u3/legrand

accès au répertoire de travail


import [Link].*;
public class getWorkingDir {
static public void main(String[] args)
{[Link]([Link]("[Link]"));}
}

©A. Le Grand Université de Genève 5


Entrées-sorties en Java

classe File
public class [Link] extends [Link] {
// Fields
public final static String pathSeparator;
public final static char pathSeparatorChar;
public final static String separator;
public final static char separatorChar;
// Constructors
public File(File dir, String name);
public File(String path);
public File(String path, String name);
// Methods
public boolean canRead();
public boolean canWrite();
public boolean delete();
public boolean equals(Object obj);
public boolean exists();
public String getAbsolutePath();
public String getName();
public String getParent();
public String getPath();
public int hashCode();
public boolean isAbsolute();
public boolean isDirectory();
public boolean isFile();
public long lastModified();
public long length();
public String[] list();
public String[] list(FilenameFilter filter);
public boolean mkdir();
public boolean mkdirs();
public boolean renameTo(File dest);
public String toString();
}

©A. Le Grand Université de Genève 6


Entrées-sorties en Java

Des sous-classes de File utiles

FichierLecture

Fichier

FichierEcriture

File

RepertoireEcriture

Repertoire

RepertoireLecture

import [Link].*;
public abstract class Fichier extends File{
public Fichier(String s) throws NullPointerException
{super(s);}
public String RepertoireDe()
{String NomComplet=[Link]();
return [Link](0,
[Link]([Link]));
}
}

import [Link].*;
public class FichierLecture extends Fichier{
public FichierLecture(String s)
throws IOException, NullPointerException
{super(s);
if (![Link]() || ![Link]())
throw new IOException( [Link]() +
": fichier inexistant.");
if (![Link]())
throw new IOException( [Link]() +
": fichier non lisible.");
}
}

©A. Le Grand Université de Genève 7


Entrées-sorties en Java

classe Repertoire
import [Link].*;
public abstract class Repertoire extends File {
private static final int lim=20;

public Repertoire(String s) throws IOException


{super(s);}

private void afficheUnFichier(String ref)


{File unElement= new File(this,ref);
[Link](([Link]())? "L":" ");
[Link](([Link]())? "E":" ");
[Link](" "+ref);
if ([Link]())
[Link]("\t"+"repertoire");
else if ([Link]())
[Link]("\t"+[Link]());
else [Link](" ????");
}

public void afficheListe(String[] fichiers)


{[Link]([Link]());
if ([Link]==0)
{[Link]("aucun fichier");
return;}
File unElement;
for(int i=0;i<[Link];i++)
{if ((i>0) && ((i % lim)==0))
{[Link]("<retour> pour continuer");
try {[Link]();}
catch (IOException e){}}
[Link](fichiers[i]); };
[Link](" "+[Link]+ " fichiers");
}
}

©A. Le Grand Université de Genève 8


Entrées-sorties en Java

classe RepertoireLecture
import [Link].*;
public class RepertoireLecture extends Repertoire {
public RepertoireLecture(String s) throws IOException
{super(s);
if (![Link]() || ![Link]())
throw new IOException( [Link]() +
": repertoire inexistant.");
if (![Link]())
throw new IOException( [Link]() +
": repertoire non lisible.");
}
}

Définition d’un filtre


import [Link].*;
class FiltreSuffixe implements FilenameFilter{
private String suffixe;
public FiltreSuffixe(String suffixe)
{[Link]=suffixe;}
public boolean accept(File dir, String nom)
{return [Link](suffixe);}
}

©A. Le Grand Université de Genève 9


Entrées-sorties en Java

Affichage du contenu d’un répertoire


import [Link].*;
public class AfficheRepertoire{
public static void main(String args[])
{Repertoire rep;
String[] fichiers;
try {
rep= new RepertoireLecture(args[0]);
switch ([Link])
{case 1:
fichiers=[Link]();
break;
case 2:
FilenameFilter ff;
ff= new FiltreSuffixe(args[1]);
fichiers=[Link](ff);
break;
default:
[Link](
"Usage: java AfficheRepertoire <nom> [filtre]");
return;} // switch
[Link](fichiers);} // try
catch (IOException e)
{[Link]([Link]());}
}
}

©A. Le Grand Université de Genève 10


Entrées-sorties en Java

copie de fichiers
import [Link].*;
public class CopieurFichier {

public static void copie(String src,String dest)


{FileInputStream s=null;
FileOutputStream d=null;
try {
FichierLecture Source= new FichierLecture(src);
FichierEcriture Destination=new FichierEcriture(dest);
s=new FileInputStream(Source);
d=new FileOutputStream(Destination);
byte[] tampon=new byte[1024];
int lu=0;
do {lu=[Link](tampon);
if (lu!=-1) [Link](tampon,0,lu);}
while (lu!=-1);
} // try
catch (IOException e)
{[Link]([Link]());}
finally
{ if (s!=null)
{try {[Link]();} catch (IOException e){}}
if (d!=null)
{try {[Link]();} catch (IOException e){}}
} // finally
} // copie

public static void main(String args[])


{if ([Link]!=2)
{[Link]("Usage: java CopieurFichier <src>
<dest>");
return;}
copie(args[0],args[1]);
}
}

©A. Le Grand Université de Genève 11


Entrées-sorties en Java

lecture filtrante d’un fichier


définition du filtre
public class RechercheMot extends FilterInputStream {
private String mot;
private int lineNumber;
DataInputStream fichier;

private int getLineNumber() {return lineNumber;}

public RechercheMot(DataInputStream fichier, String mot)


{super(fichier);
[Link]=fichier;
[Link]=mot;
lineNumber=0; }

public final String readLine() throws IOException


{String line;
do
{line=[Link]();
lineNumber++;}
while ((line!=null) && ([Link](mot)==-1));
return line;
}
}

©A. Le Grand Université de Genève 12


Entrées-sorties en Java

lecture filtrante d’un fichier


utilisation du filtre
import [Link].*;
public class Cherche {
public static void main(String args[])
{if ([Link]!=2)
{[Link](
"Usage: java Cherche <mot> <fichier>");
return;}
try
{FichierLecture f=new FichierLecture(args[1]);
FileInputStream fis=new FileInputStream(f);
DataInputStream d=new DataInputStream(fis);
RechercheMotif g=new RechercheMotif(d,args[0]);
String line;
do
{line=[Link]();
if (line!=null)
[Link]([Link]()+
": "+line);
}
while (line!=null);
[Link]();
}
catch (IOException e)
{[Link]([Link]());}
} //main

} //class

©A. Le Grand Université de Genève 13


Entrées-sorties en Java

compteur de mots
import [Link].*;
public class compteur {
public static void main(String args[]){
int nNombres=0;
int nMots=0;
FileInputStream fis=null;
StreamTokenizer st=null;
try
{fis=new FileInputStream(args[0]);
st=new StreamTokenizer(fis);}
catch (IOException e)
{[Link](
"usage: java compteur <filename>");
try {[Link]();} catch (IOException e1){}
[Link](1);}
// fin de ligne est un separateur d’unites syntaxiques
[Link](true);
// ’_’ fait partie des mots
[Link]((int) '_',(int)'_');
// ’.’ ne fait partie d’aucune unité syntaxique
[Link]((int) '.');
try
while ([Link]()!=st.TT_EOF)
{if ([Link]== st.TT_WORD)
{[Link]([Link]); nMots++;}
if ([Link]== st.TT_NUMBER)
{[Link]([Link]);nNombres++;}
} // while
catch (IOException e)
{[Link]("error when reading.");}
finally
{try {[Link]();} catch (IOException e1) {}}
[Link]("mots: "+ nMots);
[Link]("nombres: "+ nNombres);
}
}

©A. Le Grand Université de Genève 14

Vous aimerez peut-être aussi