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

Preview:

Citation preview

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

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.

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.

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.

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

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.

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();}

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.

Crear objetos File

Manipular objetos File

Leer y escribir de archivo

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) { }

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();

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

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();

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()));}

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

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

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.

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

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

int size()

boolean isEmpty()

boolean contains(Object element)

boolean add(Object element)

boolean remove(Object element)

boolean containsAll(Collection c)

boolean addAll(Collection c)

boolean removeAll(Collection c)

boolean retainAll(Collection c)

void clear()

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

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

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());

}

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

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

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

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)

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

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

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)

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)

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.”

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

Recommended