Está en la página 1de 13

Programacin Orientada a Objetos

Persistencia en JAVA

Angela C. Carrillo Ramos

Persistencia
Manejo de Streams
Un Stream representa un flujo de datos, o un canal de comunicacin con un escritor o un lector. lector.

Tipos: Tipos:
InputStream/OutputStream: InputStream/OutputStream: L/E de Bytes Reader/Writer: Reader/Writer: L/E de Caracteres InputStreamReader/OutputStreamWriter: InputStreamReader/OutputStreamWriter: convierte bytes en caracteres y viceversa

Persistencia
Tipos
DataInputStream/DataOutputStream: DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: ObjectInputStream/ObjectOutputStream: para persistencia de objetos en Java BufferedInputStream/ BufferedOutputStream/ BufferedReader/ BufferedWriter: BufferedWriter: Adiciona eficiencia

Persistencia

write() OutputStream

read() InputStream

Persistencia
Consejos para utilizar Streams
InputStream y OutputStream son clases abstractas. abstractas. El nmero de bytes disponibles para leer en un InputStream se halla con el mtodo available() close(): close(): Para cerrar el Stream

Persistencia
Ejemplo
try{

InputStreamReader converter= InputStreamReader (System.in); BufferedReader in = new BufferedReader(converter); String text = in.readLine(); int i = NumberFormat.getInstance().parse(text).intValue(); } catch(IOException e){ } catch(ParseException pe){ }

Persistencia
Si necesita leer o escribir cadenas de caracteres, use una variedad de Reader o Writer. Writer. De lo contrario, use byte Streams Se puede usar DataInputStream con alguna clase de input Stream, para leer desde un archivo, un socket o la entrada estndar, si se niecesita leer String o tipos de datos bsicos. bsicos.

Persistencia
writeFloat() writeInt() writeLong()

DataOutputStream OutputStream

write()

read()
readFloat() readInt() readLong()

DataInputStream InputStream

Persistencia
Files
La clase java.io.File encapsula el acceso java.io. a la informacin de un archivo o un directorio en el sistema de archivos

Constructores
File unarchivo = new File(archivo.txt) File unarchivo2 = new File(directorio,archivo.txt)

Persistencia
Mtodos de File
Mtodo Retorna Sirve para
archivo de lectura? archivo de escritura? borra el archivo Existe el archivo? Retorna el path Retorna el nombre canRead() boolean canWrite() boolean delete() boolean exists() boolean getAbsolutePath() String getName String

Persistencia
Mtodos de File
Mtodo
getParent() getPath() isDirectory() isFile() lastModified()

Retorna
String String boolean boolean long

Sirve para
Nombre del directorio. directorio. Retorna el path Es directorio? Es archivo? Tiempo de la ltima modificacin

Persistencia
Mtodos de File
Mtodo Retorna Sirve para
Tamao Archivos de un dir. Crea el directorio Crea todos los dir. Renombre el archivo length() long list() String[ ] mkdir() boolean mkdirs() boolean renameTo(File dest)boolean

Persistencia
File Streams
File archivo = new File(etc/password); FileInputStream sarchivo = new FileInputStream(archivo); FileInputStream sarchivo = new FileInputStream (etc/password); En caso de error pueden lanzarse dos excepciones FileNotFoundException o IOException. IOException. Si no hay error, sus mtodos available() y length() tienen el mismo valor Usar close() al terminar de usarlo. usarlo.

Persistencia
Ejemplo: El contenido de un archivo lo imprime por la salida estndar (std.out)
import java.io.*; class ListIt{ public static void main (String args[]) throws Exception{ File file = new File (args[1]); if (!file.exists() || !file.canRead()){ System.out.println(Imposible leer + file); return; }

Persistencia
if (file.isDirectory()){ String [] files = file.list(); for (int i=0; i<files.length; i++) System.out.println(files[i]); }

Persistencia
else try{ FileReader fr = new FileReader(file); BufferedReader in=new BufferedReader(fr); String line; while ((line = in.readLine()) != null) System.out.println(line); } catch(FileNotFoundException e){ System.out.println(Archivo desaparecido); } }// cierra el metodo main } // cierra la clase

Persistencia
FileOutputStream es una subclase OutputStream.
Ejemplo:
String s=new BufferedReader(new InputStreamReader(System.in)).readLine(); File out = new File(archivo.txt); FileWriter fw = new FileWriter(out): PrintWriter pw=new PrintWriter(fw); pw.println(s);

Persistencia
Serializacin
Forma automtica para salvar y cargar el estado de un objeto Se implementa la interface Serializable y se salva a travs de un Stream Los miembros de clase y los no serializados, estos ltimos etiquetados transient, NO se almacena su valor Subclases de Stream, ObjectInputStream y ObjectOutputStream usan la interfaz Serializable

Persistencia
Ejemplo de enviar a disco un objeto
import java.io.*; import java.util.*; public class Save { public static void main(String[] args){ Vector v = new Vector(); v.addElement( Gabriel Garca Mrquez ); v.addElement( new Integer(26) ); v.addElement( new Double(Math.PI) );

Persistencia
try{ FileOutputStream fileOut = new FileOutputStream(repositorio.dato); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject( v ); } catch(Exception e){ System.err.println( e.getMessage() ); } }

10

Persistencia
Ejemplo de traer de disco un objeto
import java.io.*; import java.util.*; public class Load { public static void main(String[] args){ try{ FileInputStream fileIn = new FileInputStream(repositorio.dato); ObjectInputStream in=new ObjectInputStream(fileIn); Vector v = (Vector) in.readObject(); ... }

Persistencia
catch(Exception e){ System.out.println( e.getMessage() ); } }

11

Persistencia
import java.io.*;

Serializable{ class Producto implements Serializable{ ...... } class Tienda implements Serializable{ Serializable{ ...... }

Persistencia
class TiendaConsola implements Serializable{ Serializable{ ........//clase que contiene el main Tienda t; public static void GuardarTienda (Tienda tienda, String arch){ FileOutputStream fileOut = new FileOutputStream(tiendita.dat); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject( t );
}

12

Persistencia
public static Tienda CargarTienda(String arch) {

try{
FileInputStream fileIn = new FileInputStream(tiendita.dat); ObjectInputStream in=new ObjectInputStream(fileIn); Tienda t = (Tienda) in.readObject(); ... } catch (Exception e){ }
}

........ }

13

También podría gustarte