Formation Java/J2EE- le package [Link].
*
TP : Développement d’une application JAVA exploitant le package [Link].*
Date : 19/11/2013
Par : M. Abbou
I-Objectif du TP
L’objectif de ce TP est de vous montrer comment manipuler les fichiers via JAVA.
Vous allez apprendre comment :
Utiliser la classe Scanner ;
Utiliser la classe InputStream ;
Lire un fichier avec [Link] ;
Ecrire dans un fichier avec [Link];
Ecrire dans un fichier avec [Link];
Lire un fichier ZIP avec la classe ZipInputStream ;
Utiliser la classe RandomAccessFile ;
Exploiter l’api APACHE POI pour le traitement des fichiers de Microsoft Office.
Partie I- Lecture d’un clavier [Scanner]
1. Créer une classe [Link] contenant la méthode main ()..
2. Dans la méthode main instancié un objet de type [Link].
Noter que le constructeur de la classe Scanner prend le paramètre [Link].
3. Appeler la méthode nextLine() et afficher la chaine de caractère tapée à partir du
clavier.
Formation Java/J2EE – IO : TP 1 1
4. Appeler la méthode nextInt() et récupérer deux nombres puis faire la somme.
Partie II- Lecture d’un fichier de paramètres en utilisant la classe abstract
InputStream
1. Créer le fichier de conf [Link] et le mettre dans le CLASSPATH (dossier
src).
2. Remplissez le fichier de conf par exemple :
param1=value1
param2=value2
3- Créer la classe LirePropertiesFile comme suit :
package [Link];
import [Link];
import [Link];
import [Link];
public class LirePropertiesFile {
Formation Java/J2EE – IO : TP 1 2
private static final String CONF_FILE="[Link]";
private Properties prop=new Properties();
private void lire(String fileName) throws IOException {
[Link]([Link]().getClassLoader().getResourceAsStream(fileName));
}
public static void main(String[] args) {
LirePropertiesFile instance=new LirePropertiesFile();
try {
[Link](CONF_FILE);
[Link]("le contenu fu fichier " + CONF_FILE + " est: ");
Set<Object> keys=[Link]();
for (Object object : keys) {
[Link](object + " " +
[Link]([Link]()));
}
} catch (IOException e) {
[Link]();
}
}
}
Partie III- Lire et Ecrire avec [Link] et
[Link]
1. Créer le fichier de conf [Link] et le mettre dans le package
[Link].
2. Remplissez le fichier de conf par exemple :
path-to-file1=c:\\[Link]
path-to-file2=c:\\[Link]
3- Créer la classe LirePropertiesFile2 comme suit :
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class LireEtEcrireFile {
public static void main(String[] args) {
ResourceBundle rb = null;
rb = PropertyResourceBundle
.getBundle("[Link]");
String fileLecture = [Link]("file_lecture");
String fileEcriture = [Link]("file_ecriture");
Formation Java/J2EE – IO : TP 1 3
[Link](fileLecture);
[Link](fileEcriture);
// Pour lire dans le fichier
File file = new File(fileLecture);
FileReader fr;
try {
fr = new FileReader(file);
BufferedReader bfr = new BufferedReader(fr);
String line = [Link]();
while (line != null) {
[Link](line);
line = [Link]();
}
// Pour écrire dans le fichier
FileWriter frWrite = new FileWriter(fileEcriture);
BufferedWriter bfrWrite = new BufferedWriter(frWrite);
[Link]("sdsdsd");
[Link]();
} catch (FileNotFoundException e) {
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
Partie IV- Ecrire avec [Link]
1. Créer le fichier de conf [Link] et le mettre dans le package
[Link].
2. Remplissez le fichier de conf par exemple :
path-to-file=c:\\[Link]
3- Créer la classe LireEtEcrireFile2comme suit :
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class LireEtEcrireFile2 {
public static void main(String[] args) {
ResourceBundle rb = null;
rb =
[Link]("[Link]");
String fileEcriture = [Link]("file_ecriture");
[Link](fileEcriture);
try {
// Pour écrire dans le fichier
PrintWriter pw = new PrintWriter(new File(fileEcriture));
[Link]("encore une ligne 1");
[Link]("encore une ligne 2");
[Link](1236d);
Formation Java/J2EE – IO : TP 1 4
[Link]();
[Link]();
} catch (FileNotFoundException e) {
[Link]();
}
}
}
Partie V- Lecture d’un fichier ZIP
1- Créer deux fichiers text ([Link] et [Link]). Insérer des données dans
les deux fichiers.
2- Compresser le fichier (par exemple [Link]).
3- Créer la classe LireFichierZip et implémenter la méthode main comme suit :
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class LireFichierZip {
public static void main(String[] args) {
String file = "C:/workspace/[Link]";
try {
ZipInputStream zipFile = new ZipInputStream(new
FileInputStream(file));
ZipEntry ze = [Link]();
while (ze != null) {
[Link]([Link]());
for (int c = [Link](); c != -1; c = [Link]())
[Link]((char) c);
ze = [Link]();
[Link]("");
}
[Link]();
[Link]();
} catch (FileNotFoundException e) {
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
4- Exécuter le programme et observer le résultat.
Formation Java/J2EE – IO : TP 1 5
Partie VI- Accéder directement aux données avec RandomAccessFile
1- Créer la classe TestRandomAccesFileet implémenter la méthode main comme suit :
package [Link];
import [Link];
public class TestRandomAccesFile {
public static void main(String[] args) {
try {
//Pour écrire :
RandomAccessFile out = new RandomAccessFile("[Link]", "rw");
for (int i = 0; i < 10; i++) {
[Link](i * 100);
}
[Link]();
//Pour lire :
RandomAccessFile in = new RandomAccessFile("[Link]", "rw");
for (int i = 0; i < 10; i++) {
[Link]([Link]());
}
[Link]();
//Pour récupérer un enregistrement directement :
[Link]("L'enreistrement lu est :");
RandomAccessFile anotherFile = new RandomAccessFile("[Link]", "rw");
// 5 représente le sixième enregistement puisque le premier commence à 0
// 4 est la taille des données puisqu'elles sont des entiers de type int
// (codé sur 4 octets)
[Link](5*4);
[Link]([Link]());
[Link]();
//Pour Modifier un enregistrement directement :
RandomAccessFile anotherFile2 = new RandomAccessFile("[Link]", "rw");
// 5 représente le sixième enregistement puisque le premier commence à 0
// 4 est la taille des données puisqu'elles sont des entiers de type int
// (codé sur 4 octets)
[Link](5*4);
[Link](777);
[Link]();
//Pour lire :
[Link]("Lire après modification");
RandomAccessFile in2 = new RandomAccessFile(
"[Link]", "rw");
for (int i = 0; i < 10; i++) {
[Link]([Link]());
}
[Link]();
} catch (Exception e) {
[Link]();
}
}
}
Formation Java/J2EE – IO : TP 1 6
2- Exécuter le programme et observer le résultat.
Partie VII- Performance des flux « bufferisés »
Dans cet exemple, nous allons comparer les temps de réponse de lecture d’un fichier avec
FileInputStream et BufferedInputStream. Vous allez voir que la classe
BufferedInputStream est plus performante.
1- Créer la classe TestVitesseFlux et implémenter la méthode main comme suit :
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class TestVitesseFlux {
public static void main(String[] args) {
FileInputStream fis;
BufferedInputStream bis;
try {
fis = new FileInputStream(new File("C:/[Link]"));
bis = new BufferedInputStream(new FileInputStream(new File("C:/[Link]")));
byte[] buf = new byte[8];
long startTime = [Link]();
while ([Link](buf) != -1)
;
[Link]("Temps de lecture avec FileInputStream : "+
([Link]() - startTime));
startTime = [Link]();
while ([Link](buf) != -1)
;
[Link]("Temps de lecture avec BufferedInputStream : "+
([Link]() - startTime));
[Link]();
[Link]();
} catch (FileNotFoundException e) {
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
2- Exécuter le programme et observer le résultat.
Formation Java/J2EE – IO : TP 1 7
Partie VIII- Exploitation de l’api APACHE POI
Création d’un fichier Excel
1- Ajouter les JAR listés ci-après au CLASSPATH :
Formation Java/J2EE – IO : TP 1 8
2- Créer la classe PoiWriteExcelFile comme suit :
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class PoiWriteExcelFile {
public static void main(String[] args) {
try {
FileOutputStream fileOut = new FileOutputStream("[Link]");
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet worksheet = [Link]("POI Worksheet");
// index from 0,0... cell A1 is cell(0,0)
// Il s'agit de la ligne 1 dans le fichier Excel
HSSFRow row1 = [Link](0);
//Première cellule dans la ligne 1
HSSFCell cellA1 = [Link](0);
[Link]("Hello");
HSSFCellStyle cellStyle = [Link]();
[Link]([Link]);
[Link](HSSFCellStyle.SOLID_FOREGROUND);
[Link](cellStyle);
//Deuxième cellule dans la ligne 1
HSSFCell cellB1 = [Link](1);
[Link]("Goodbye");
cellStyle = [Link]();
[Link](HSSFColor.LIGHT_CORNFLOWER_BLUE.index);
[Link](HSSFCellStyle.SOLID_FOREGROUND);
[Link](cellStyle);
//Troixième cellule dans la ligne 1
HSSFCell cellC1 = [Link](2);
[Link](true);
//Quatrième cellule dans la ligne 1
HSSFCell cellD1 = [Link](3);
[Link](new Date());
cellStyle = [Link]();
[Link]([Link]("m/d/yy h:mm"));
[Link](cellStyle);
[Link](fileOut);
[Link]();
[Link]();
Formation Java/J2EE – IO : TP 1 9
} catch (FileNotFoundException e) {
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
3- Exécuter la méthode main. Le fichier [Link] devrait être crée :
Création d’un fichier Word
1- Ajouter les JAR au CLASSPATH. (mêmes JARs utilisés pour la première partie).
2- Créer la classe CreateDocumentFromScratch comme suit :
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class CreateDocumentFromScratch {
public static void main(String[] args) {
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraphOne = [Link]();
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
Formation Java/J2EE – IO : TP 1 10
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
XWPFRun paragraphOneRunOne = [Link]();
[Link](true);
[Link](true);
[Link]("Hello world! This is paragraph one!");
[Link]();
XWPFRun paragraphOneRunTwo = [Link]();
[Link]("Run two!");
[Link](100);
XWPFRun paragraphOneRunThree = [Link]();
[Link](true);
[Link](20);
[Link]([Link]);
[Link](" More text in paragraph one...");
XWPFParagraph paragraphTwo = [Link]();
[Link]([Link]);
[Link](200);
XWPFRun paragraphTwoRunOne = [Link]();
[Link]("And this is paragraph two.");
FileOutputStream outStream = null;
try {
outStream = new FileOutputStream("[Link]");
} catch (FileNotFoundException e) {
[Link]();
}
try {
[Link](outStream);
[Link]();
} catch (FileNotFoundException e) {
[Link]();
} catch (IOException e) {
[Link]();
}
}
}
3- Exécuter la méthode main. Le fichier [Link] devrait être crée :
Formation Java/J2EE – IO : TP 1 11