43

Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Embed Size (px)

Citation preview

Page 1: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps
Page 2: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps
Page 3: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Page 4: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Las propiedades del sistema es una característica que reemplaza el concepto de variables de entorno (que son específicos de la plataforma)

El método System.getProperties retorna el objeto Properties.

El método getProperty retorna un String que representa el valor de la propiedad con dicho nombre

Usar la opción -D para incluir una nueva propiedad

Page 5: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

La clase Properties implementa un mapeo de nombre a valor.

El método propertyNames retorna un Enumeration de todos los nombres de las propiedades.

Se puede leer o escribir una colección de properties a un archivo utilizando load y store.

Page 6: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

La mayoría de los programas trabajan con datos externos almacenados en archivos locales o provenientes de otras máquinas de la red

Java trabaja con el concepto de streams de datos

Abstraen el concepto de intercambio de información entre varios dispositivos y provee una interfaz consistente para interactuar con las diferentes fuentes de E/S.

Page 7: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Luego de que los datos físicos se mapean a un stream, un programa Java puede leer los datos de ese stream de forma serial (de a byte, de a char, etc.)

Algunos tipos de streams son los streams de bytes (InputStream, OutputStream) y de caracteres (Reader and Writer).

El mismo archivo físico puede ser leído utilizando distintos tipos de streams, por ejemplo FileInputStream, or FileReader.

Page 8: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Al trabajar con un stream, se debería:

₋ Abrir el stream que apunte a una fuente de datos específica: un archivo, un socket, URL, etc.

₋ Leer o escribir datos desde/a el stream₋ Cerrar el stream

Page 9: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps
Page 10: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

El System.out le permite escribir a la “salida estándar”₋ Es un objeto de tipo PrintStream.

El System.in le permite leer de la “entrada estándar”₋ Es un objeto de tipo InputStream.

El System.err le permite escribir a la “error estándar”₋ Es un objeto de tipo PrintStream.

Page 11: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);try {

String linea = br.readLine();} catch (IOException e) {// TODO Auto-generated catch block

e.printStackTrace();}

Page 12: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

El método println imprime el argumento y baja de línea(\n)

El método print imprime el argumento sin la línea nueva (\n)

Los métodos print y println son sobrecargados para los tipos primitivos (boolean, char, int, long,float, and double) y para char[], Object y String.

Page 13: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Crear objetos File

Manipular objetos File

Leer y escribir de archivo

Page 14: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

try { File file = new File("filename"); // Crear el archivo si no existe boolean success = file.createNewFile(); if (success) { // El archivo no existía y fue creado } else { // El archivo ya existía } } catch (IOException e) { }

Page 15: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

File names:₋ String getName()₋ String getPath()₋ String getAbsolutePath()₋ String getParent()₋ boolean renameTo(File newName)

File tests:₋ boolean exists()₋ boolean canWrite()₋ boolean canRead()₋ boolean isFile()₋ boolean isDirectory()₋ boolean isAbsolute();

Page 16: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

File input:₋ Use la clase FileReader para leer caracteres₋ Use la clase BufferedReader para utilizar el método

readLine

File output:₋ Use la clase FileWriter para escribir caracteres ₋ Use la clase PrintWriter para utilizar los métodos print y

println

Page 17: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

File input:

FileReader fr = new FileReader("filename");BufferedReader br = new BufferedReader(fr);String line = br.readLine();fr.close();

File output:

File file = new File("filename");PrintStream print = new PrintStream(file);

print.println("Hola Mundo"); print.close();

Page 18: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Properties prop = new Properties();InputStream is = null;try {

is = new FileInputStream("d:\fichero.properties");prop.load(is);

} catch (IOException ioe) {}

for (Enumeration e = prop.keys(); e.hasMoreElements() ; ) { // Obtenemos el objeto Object obj = e.nextElement(); System.out.println(obj + ": " +

prop.getProperty(obj.toString()));}

Page 19: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Java provee un framework que permite trabajar con colecciones de objetos

Una colección permite que varios objetos sean tratados como una unidad

Los objetos pueden ser almacenados, recuperados y manipulados como elementos en una colección

Este framework se encuentra en el paquete java.util

Page 20: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Hay ciertas operaciones básicas en las que vamos a usar colecciones:

₋ Agregar objetos a una colección

₋ Eliminar objetos de una colección

₋ Chequear si uno o un grupo de objetos pertenece a determinada colección

₋ Poder obtener objetos de una colección

₋ Recorrer una colección, obteniendo cada uno de los objetos almacenados

Page 21: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Comprende las siguientes partes:

₋ Interfaces que permiten manipular colecciones independientemente de su implementación

₋ Un pequeño grupo de implementaciones

₋ Clases que proveen utilidades para operar sobre colecciones como ordenamiento, búsqueda, etc.

Page 22: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Collection ₋ Interfaz básica que define las operaciones

normales que permiten mantener y manipular un grupo de objetos

Set ₋ Extiende Collection para representar un conjunto

de elementos únicos

Sorted Set₋ Extiende Set para agregar funcionalidades para

mantener un conjunto de elementos de forma ordenada

Page 23: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

List₋ Extiende Collection para mantener una

secuencia de elementos que no tienen que ser únicos

Map₋ Interfaz básica que define operaciones para

mantener mapeos entre claves y valores

SortedMap ₋ Extiende Map para mantener los elementos en

orden

Page 24: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps
Page 25: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps
Page 26: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

int size()

boolean isEmpty()

boolean contains(Object element)

boolean add(Object element)

boolean remove(Object element)

Page 27: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

boolean containsAll(Collection c)

boolean addAll(Collection c)

boolean removeAll(Collection c)

boolean retainAll(Collection c)

void clear()

Page 28: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Las colecciones proveen un iterador que permiten acceso secuencial a los elementos

Se puede obtener un iterador invocando al siguiente método definido en la interfaz Collection:

₋ Iterator iterator()₋ Retorna un objeto que implementa la interfaz

Iterator

Page 29: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Métodos:₋ boolean hasNext()₋ Object next()₋ Object remove()

Page 30: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Un Iterator de un Set es desordenado

Un ListIterator de un List puede recorrer la lista en ambos sentidos, utilizando next o previous:

List list = new ArrayList();// add some elements

Iterator elements = list.iterator(); while ( elements.hasNext() ) { System.out.println(elements.next());

}

Page 31: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

El paquete java.util provee implementaciones basadas en las interfaces principales

Agrega clases abstractas que son las bases sobre las cuales se implementan las clases concretas

Page 32: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps
Page 33: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

No admiten duplicados

Puede contener a lo sumo un valor null

La interfaz Set no agrega operaciones₋ HashSet implementa Set₋ Utiliza una tabla de hash₋ No garantiza orden de los elementos₋ LinkedHashSet subclase de HashSet garantiza

orden de inserción

Page 34: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Admiten duplicados y mantienen sus elementos en orden

Cada elemento ocupa una posición en la lista cuya numeración comienza en cero

Agrega operaciones para trabajar especificamente con listas

Agregan un iterador particular para iterar sobre listas en ambas direcciones

Se proveen 3 implementaciones de List:ArrayList, LinkedList y Vector

Page 35: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Definen mapeos clave valor

Al par <clave, valor> se le llama entrada

No admiten claves duplicadas

Cada clave se mapea a un único valor

Las claves y valores tienen que ser objetos, los tipos primitivos deben ser envueltos en sus clases wrapper

El Map no es una colección (no extiende Collection)

Page 36: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Operaciones básicas₋ Object put(Object key)₋ Object get(Object key)₋ Object remove(Object key)₋ boolean containsKey(Object key)₋ boolean containsValue(Object value)₋ int size()₋ boolean isEmpty()

Implementaciones de Map:₋ HashMap, LinkedHashMap, HashTable

Page 37: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Sets y Maps tienen interfaces especiales para implementaciones que ordenan sus elementos de acuerdo a un orden específico

Los objetos pueden especificar su orden natural implementando la interfaz Comparable o de acuerdo a un orden total a través de un objeto comparador que implemente la interfaz Comparator

Implementaciones: TreeSet y TreeMap

Page 38: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Comparator

₋ El control de la ordenación se puede lograr creando un objeto comparador que imponga el orden total de los elementos de una colección

₋ La interfaz tiene un único método:₋ int compare(Object o1, Object o2)

Page 39: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Comparable

₋ Una clase puede definir el orden natural de sus instancias implementando esta interfaz

₋ Muchas clases de la API de Java como los wrappers, String, Date, etc, implementan esta interfaz.

₋ Único método:₋ int compareTo(Object o)

Page 40: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps
Page 41: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Vector implements la interface List.

Stack es una subclase de Vector y soporta los métodos push, pop y peek.

Hashtable implements la interface Map.

Enumeration es una variación de la interface Iterator:₋ Un enumeration es retornado por el método

elements de Vector, Stack y Hashtable

Esas clases son thread-safe, y debido a eso, “pesadas.”

Page 42: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Page 43: Propiedades del Sistema La clase Properties Streams Consola I/O Entrada y Salida Archivos: File Colecciones Iteradores Maps

Thinking in Java₋ Bruce Eckel

The Java Tutorial₋ http://download.oracle.com/javase/tutorial/ SCJP₋ Kathy Sierra – Cap. 7 – Generics and Collections