package docen_archivos; import java.applet.Applet; import java.awt.TextArea; import java.awt.BorderLayout; import java.net.URL; import java.awt.Color; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.MalformedURLException; import java.io.IOException; /******************************************************************************** * Este applet nos muestra la información que obtenemos con una serie de métodos * que nos permiten situarnos dentro del sistema de archivos *******************************************************************************/ public class applet_informador extends Applet { TextArea editor = new TextArea(); /************** Inicializar el applet *********************/ public void init() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } /****************** Inicialización de componentes **********/ private void jbInit() throws Exception { editor.setBackground( Color.orange ); editor.append( "getName(): " + this.getName() + "\n" ); editor.append( "getClass().getName(): " + getClass().getName() + "\n" ); editor.append( "Protocol: " + this.getDocumentBase().getProtocol() + "\n"); editor.append( "CodeBase (getFile): " + this.getCodeBase().getFile() + "\n"); editor.append( "CodeBase (toString): " + this.getCodeBase().toString() + "\n"); editor.append( "DocumentBase (getFile): " + this.getDocumentBase().getFile() + "\n"); editor.append( "DocumentBase (toString): " + this.getDocumentBase().getFile() + "\n"); editor.append( "Habrá podido ver que getCodeBase().getFile() y getCodeBase().toString()" + " no dan el mismo resultado\n\n"); /*** Obtengo la URL, si no se encuentra el recurso, entonces la url es null ***/ URL url = getClass().getResource("applet_informador.class"); if (url == null) editor.append( "Don´t find Resource applet_informador.class. \n"); else editor.append( "Resource (\"applet_informador.class\"): " + url.toString() + "\n"); editor.append( "getClass().getResource(\"xx\") tiene como directorio de referencia el del applet\n\n"); /******* Lee el archivo de código fuente y lo escribe en el editor *********/ editor.append( "CODIGO FUENTE:\n"); if ( !leer_archivo( "codigo_fuente/applet_informador.java", editor) ) editor.append( "No he podido abrir el archivo de código fuente"); this.setLayout(new BorderLayout()); this.add( editor, BorderLayout.CENTER ); } /**************************************************************************** * Lee el archivo de código fuente y lo escribe en el editor. * Devuelve false si se ha producido un error, true en caso contrario. ****************************************************************************/ boolean leer_archivo( String archivo, TextArea area ) { try { /****** Crea un BufferedReader a partir de la URL del archivo **********/ URL url = new URL(getCodeBase().toString()+archivo); // Abro URL InputStream is = url.openStream(); // Abro InputStream desde URL BufferedReader di = new BufferedReader(new InputStreamReader(is)); String linea; /***** Lee línea a línea el archivo ... ****/ do { linea = di.readLine(); if (linea == null) break; else area.append( linea + "\n" ); } while ( true ); return true; } /****** Las salidas con print y println se dirigen a la consola Java ****/ catch (SecurityException e) { // Hija de RuntimeException System.out.print( "SecurityException. Función leer_archivos(). "); System.out.println(e.getMessage() ); return false; } catch (MalformedURLException mue) { // Hija de IOException System.out.print( "MalformedURLException. Funcion leer_archivos(). "); System.out.println(mue.getMessage() ); return false; } catch (IOException e ) { // // Hija de Exception System.out.print( "IOException. Funcion leer_archivos(). "); System.out.println(e.getMessage() ); return false; } catch (Exception e ) { System.out.print( "Exception. Funcion leer_archivos(). "); System.out.println(e.getMessage() ); e.printStackTrace(); return false; } } //////////// FIN DE leer_archivo ////////////////// }