import java.io.*; import java.net.*; public class NFIS extends InputStream { Socket service; InputStream lecture; BufferedReader bf; OutputStream ecriture; PrintStream ps; public NFIS(String f) { try { service = new Socket("localhost",61234); lecture = service.getInputStream(); bf = new BufferedReader(new InputStreamReader(lecture)); ecriture = service.getOutputStream(); ps = new PrintStream(ecriture); ps.println("OPEN "+f); ps.flush(); String s = bf.readLine(); if (s.charAt(0)=='O') System.err.println("Fichier ouvert"); else System.err.println("Raté"); } catch(Exception e) { e.printStackTrace(); } } public int read() { try { ps.println("READ"); ps.flush(); String s = bf.readLine(); if (s!=null && s.length()!=0) { switch (s.charAt(0)) { case 'O': byte []bb = s.getBytes(); System.err.println("Bytes reçus "+bb.length); for (int i=0; i<bb.length; i++) System.err.println(i+" : "+(int)(bb[i])); char c = 0; System.err.println(s.length()); if (s.length()<4) c = '\n'; else c = s.charAt(3); System.err.println("J'ai recu le caractère "+c); return (int)c; case 'E': System.err.println("fin de fichier détectée"); return -1; case 'B': break; } } } catch(Exception e) { e.printStackTrace(); } return 0; } public void close() { try { ps.println("CLOSE"); ps.flush(); service.close(); } catch(Exception e) { e.printStackTrace(); } } // Code utilisateur... public static void main(String []a) { try { InputStream is = new NFIS("essai.txt"); BufferedReader bf = new BufferedReader(new InputStreamReader(is)); System.out.println("J'ai lu "+bf.readLine()); is.close(); } catch(Exception e) { e.printStackTrace(); } } }