Académique Documents
Professionnel Documents
Culture Documents
*
TP : Développement d’une application JAVA exploitant le package java.io.*
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.
Formation Java/J2EE – IO : TP 1 1
4. Appeler la méthode nextInt() et récupérer deux nombres puis faire la somme.
package ma.cigma.formation.javaj2ee.io;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
Formation Java/J2EE – IO : TP 1 2
private static final String CONF_FILE="conf.properties";
private Properties prop=new Properties();
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
public class LireEtEcrireFile {
public static void main(String[] args) {
ResourceBundle rb = null;
rb = PropertyResourceBundle
.getBundle("ma.cigma.formation.javaj2ee.io.conf.paramconf");
String fileLecture = rb.getString("file_lecture");
String fileEcriture = rb.getString("file_ecriture");
Formation Java/J2EE – IO : TP 1 3
System.out.println(fileLecture);
System.out.println(fileEcriture);
// Pour lire dans le fichier
File file = new File(fileLecture);
FileReader fr;
try {
fr = new FileReader(file);
BufferedReader bfr = new BufferedReader(fr);
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
public class LireEtEcrireFile2 {
public static void main(String[] args) {
ResourceBundle rb = null;
rb =
PropertyResourceBundle.getBundle("ma.cigma.formation.javaj2ee.io.conf.paramconf");
String fileEcriture = rb.getString("file_ecriture");
System.out.println(fileEcriture);
try {
// Pour écrire dans le fichier
PrintWriter pw = new PrintWriter(new File(fileEcriture));
pw.println("encore une ligne 1");
pw.println("encore une ligne 2");
pw.print(1236d);
Formation Java/J2EE – IO : TP 1 4
pw.flush();
pw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class LireFichierZip {
public static void main(String[] args) {
String file = "C:/workspace/exemple.zip";
try {
ZipInputStream zipFile = new ZipInputStream(new
FileInputStream(file));
ZipEntry ze = zipFile.getNextEntry();
while (ze != null) {
System.out.println(ze.getName());
for (int c = zipFile.read(); c != -1; c = zipFile.read())
System.out.print((char) c);
ze = zipFile.getNextEntry();
System.out.println("");
}
zipFile.closeEntry();
zipFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Formation Java/J2EE – IO : TP 1 5
Partie VI- Accéder directement aux données avec RandomAccessFile
package ma.cigma.formation.javaj2ee.io;
import java.io.RandomAccessFile;
try {
//Pour écrire :
RandomAccessFile out = new RandomAccessFile("monfichier.dat", "rw");
for (int i = 0; i < 10; i++) {
out.writeInt(i * 100);
}
out.close();
//Pour lire :
RandomAccessFile in = new RandomAccessFile("monfichier.dat", "rw");
for (int i = 0; i < 10; i++) {
System.out.println(in.readInt());
}
in.close();
//Pour récupérer un enregistrement directement :
System.out.println("L'enreistrement lu est :");
RandomAccessFile anotherFile = new RandomAccessFile("monfichier.dat", "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)
anotherFile.seek(5*4);
System.out.println(anotherFile.readInt());
anotherFile.close();
//Pour Modifier un enregistrement directement :
RandomAccessFile anotherFile2 = new RandomAccessFile("monfichier.dat", "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)
anotherFile2.seek(5*4);
anotherFile2.writeInt(777);
anotherFile.close();
//Pour lire :
System.out.println("Lire après modification");
RandomAccessFile in2 = new RandomAccessFile(
"monfichier.dat", "rw");
for (int i = 0; i < 10; i++) {
System.out.println(in2.readInt());
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Formation Java/J2EE – IO : TP 1 6
2- Exécuter le programme et observer le résultat.
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.
package ma.cigma.formation.javaj2ee.io;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
Formation Java/J2EE – IO : TP 1 7
Partie VIII- Exploitation de l’api APACHE POI
Formation Java/J2EE – IO : TP 1 8
2- Créer la classe PoiWriteExcelFile comme suit :
package ma.cigma.formation.javaj2ee.io.poi;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
cellStyle.setFillForegroundColor(HSSFColor.LIGHT_CORNFLOWER_BLUE.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellB1.setCellStyle(cellStyle);
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
cellD1.setCellStyle(cellStyle);
workbook.write(fileOut);
fileOut.flush();
fileOut.close();
Formation Java/J2EE – IO : TP 1 9
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1- Ajouter les JAR au CLASSPATH. (mêmes JARs utilisés pour la première partie).
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xwpf.usermodel.Borders;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.VerticalAlign;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
Formation Java/J2EE – IO : TP 1 10
paragraphOne.setBorderRight(Borders.SINGLE);
paragraphOne.setBorderLeft(Borders.SINGLE);
paragraphOne.setBorderBetween(Borders.SINGLE);
XWPFRun paragraphOneRunOne = paragraphOne.createRun();
paragraphOneRunOne.setBold(true);
paragraphOneRunOne.setItalic(true);
paragraphOneRunOne.setText("Hello world! This is paragraph one!");
paragraphOneRunOne.addBreak();
XWPFRun paragraphOneRunTwo = paragraphOne.createRun();
paragraphOneRunTwo.setText("Run two!");
paragraphOneRunTwo.setTextPosition(100);
XWPFRun paragraphOneRunThree = paragraphOne.createRun();
paragraphOneRunThree.setStrike(true);
paragraphOneRunThree.setFontSize(20);
paragraphOneRunThree.setSubscript(VerticalAlign.SUBSCRIPT);
paragraphOneRunThree.setText(" More text in paragraph one...");
XWPFParagraph paragraphTwo = document.createParagraph();
paragraphTwo.setAlignment(ParagraphAlignment.DISTRIBUTE);
paragraphTwo.setIndentationRight(200);
XWPFRun paragraphTwoRunOne = paragraphTwo.createRun();
paragraphTwoRunOne.setText("And this is paragraph two.");
FileOutputStream outStream = null;
try {
outStream = new FileOutputStream("poi-test.doc");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
document.write(outStream);
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Formation Java/J2EE – IO : TP 1 11