import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.nio.charset.Charset; public class ExemplesIO { private static byte lireBinaire(String f) throws IOException{ byte b=0; InputStream in = new FileInputStream(f); int next = in.read(); if(next!=1)b=(byte)next; // attention à la manipulation de bytes pour les caractères de code > 127 if(b=='é') System.out.println("test 1:OK"); if((b & 0xff)=='é') System.out.println("test 2:OK"); return b; } private static char lireCaractere(String f) throws IOException { char c='\0'; InputStreamReader in = new InputStreamReader( new FileInputStream(f), "UTF-8"); // ou "ISO-8859-1","UTF-16","US=ASCII" int next = in.read(); if(next!=-1) c=(char) next; return c; } public static void ecrireBinaire(String f, byte b) throws IOException { OutputStream out = new FileOutputStream(f); out.write(b); out.close(); } public static void ecrireCaractere(String f, char c) throws IOException { OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(f), "UTF-8"); // ou "ISO-8859-1","UTF-16","US=ASCII" out.write(c); out.close(); } private static String lireLigne(String f) throws IOException{ BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream(f), "UTF-8")); String ligne = in.readLine(); if(ligne!=null) return ligne; System.out.println("fin de fichier"); return null; } private static void ecrireLigne(String f,String ligne) throws IOException { PrintWriter out = new PrintWriter( new OutputStreamWriter( new FileOutputStream(f), "UTF-8")); out.println(ligne); out.close(); } public static void main(String[] args){ try { ecrireBinaire("f.dat",(byte)233); System.out.println("lireBinaire:"+lireBinaire("f.dat")); ecrireCaractere("f.txt",'é'); System.out.println("lireCaractere:"+lireCaractere("f.txt")); ecrireLigne("f.txt","Bônjour"); System.out.println("lireLigne:"+lireLigne("f.txt")); // trouver les encodages permis sur une implantation String first3 = " "; System.out.print("\n*** Encodages supportés par la machine"); for(String s:Charset.availableCharsets().keySet()){ if(!(first3.equals(s.subSequence(0, 3)))) System.out.println(); System.out.print(s+" "); first3=s.substring(0,3); } System.out.println(); } catch (IOException e) { System.out.println("erreur:"+e); e.printStackTrace(); } } }