La clase PrintStream deriva directamente de FilterOutputStream. La característica más importante
es que dispone de métodos que añaden la marca de fin de línea. Los flujos de tipo PrintStream
son de salida, se asocian con otro flujo de bajo nivel, de bytes, que a su vez se crea asociado a un archivo
externo. Por ejemplo, mediante el flujo fjp se puede escribir cualquier tipo de dato; los bytes
que ocupa cada dato se vuelcan secuencialmente en Complex.dat
fjp = new PrintStream(new FileOutputStream("Complex.dat"));
Los métodos de esta clase, print( ) y println( ) están sobrecargados para poder escribir
desde cadenas hasta cualquiera de los datos primitivos; println( ) escribe un dato y a continuación
añade la marca de fin de línea.
A continuación están los métodos más importantes:
public PrintStream(OutputStream destino)
Crea un objeto asociado con cualquier objeto de salida pasado como argumento.
public PrintStream(OutputStream destino, boolean flag)
Crea un objeto asociado con objeto de salida pasado como argumento y si el segundo argumento
es true se produce un automático volcado al escribir el fin de línea.
public void flush( )
Vuelca el flujo actual.
public void print(Object obj)
Escribe la representación del objeto obj en el flujo.
public void print(String cad)
Escribe la cadena en el flujo.
public void print(char c)
Escribe el carácter c en el flujo.
método print( ) para cada tipo de dato primitivo.
public void println(Object obj)
Escribe la representación del objeto obj en el flujo y el fin de línea.
public void println(String cad)
Escribe la cadena en el flujo y el fin de línea.
catch (IOException io)
{
System.out.println("Anomalía al leer flujo de entrada, "
+ io.getMessage( ));
return; // termina la ejecución
}
finally {
try
{
obfl.close( );
}
catch (IOException er)
{
er.printStackTrace( );
}
}
// termina el proceso, escribe la temperatura máxima
System.out.println("\n La temperatura máxima: " + (float)mxt);
}
}
public void println(char c)
Escribe el carácter c en el flujo y el fin de línea.
método println( ) para cada tipo de dato primitivo
Nota de programación
El objeto definido en la clase System: System.out es de tipo PrintStream, asociado,
normalmente, con la pantalla. Por ello se han utilizado los métodos:
System.out.print( );
System.out.println( );
sábado, 29 de junio de 2013
Archivos y flujos en Java
Los archivos tienen como finalidad guardar datos de forma permanente; una vez que acaba la aplicación,
los datos siguen disponibles para que otra aplicación pueda recuperarlos, para su consulta o modificación.
El proceso de archivos en Java se hace mediante el concepto de flujo (stream) o canal, o también
denominado secuencia. Los flujos pueden estar abiertos o cerrados, conducen los datos entre el programa
y los dispositivos externos. Con las clases y sus métodos proporcionados por el paquete java.io
se pueden tratar archivos secuenciales, de acceso directo, archivos indexados, etcétera.
Flujos y archivos
Un fichero (archivo) de datos, o simplemente un archivo, es una colección de registros relacionados
entre sí con aspectos en común y organizados para un propósito específico. Por ejemplo, un fichero
de una clase escolar contiene un conjunto de registros de los estudiantes de esa clase.
Un archivo en una computadora es una estructura diseñada para contener datos, los cuales están
organizados de tal modo que puedan ser recuperados fácilmente, actualizados o borrados y almacenados
de nuevo en el archivo con todos los cambios realizados.
Según las características del soporte empleado y el modo en que se han organizado los registros,
se consideran dos tipos de acceso a los registros de un archivo:
• acceso secuencial,
• acceso directo.
El acceso secuencial implica el acceso a un archivo según el orden de almacenamiento de sus registros,
uno tras otro.
El acceso directo implica el acceso a un registro determinado, sin que ello implique la consulta de
los registros precedentes. Este tipo de acceso sólo es posible con soportes direccionales.
En Java un archivo es, sencillamente, una secuencia de bytes, que son la representación de los datos
almacenados. Java dispone de clases para trabajar las secuencias de bytes como datos de tipos básicos
(int, double, String ...); incluso, para escribir o leer del archivo objetos. El diseño del archivo es el
que establece la forma de manejar las secuencias de bytes, con una organización secuencial, o bien de
acceso directo.
Un flujo (stream) es una abstracción que se refiere a una corriente de datos que fluyen entre un
origen o fuente (productor) y un destino o sumidero (consumidor). Entre el origen y el destino debe
existir una conexión o canal ( pipe) por la que circulen los datos. La apertura de un archivo supone establecer
la conexión del programa con el dispositivo que contiene el archivo; por el canal que comunica
el archivo con el programa van a fluir las secuencias de datos.
Abrir un archivo supone crear un objeto que queda asociado con un flujo. Al comenzar la ejecución
de un programa Java se crean automáticamente tres objetos de flujo, son tres canales por los que
pueden fluir datos, de entrada o de salida. Éstos son objetos definidos en la clase System:
• System.in; entrada estándar; permite la entrada al programa de flujos de bytes desde el teclado.
• System.out; salida estándar; permite al programa la salida de datos por pantalla.
• System.err; salida estándar de errores; permite al programa salida de errores por pantalla.
En Java, un archivo es simplemente un flujo externo, una secuencia de bytes almacenados en un
dispositivo externo (normalmente en disco). Si el archivo se abre para salida, es un flujo de archivo de
salida. Si el archivo se abre para entrada, es un flujo de archivo de entrada. Los programas leen o
escriben
en el flujo, que puede estar conectado a un dispositivo o a otro. El flujo es por tanto una abstracción
de tal forma que las operaciones que realizan los programas son sobre el flujo independientemente
del dispositivo al que esté asociado.
A tener en cuenta
El paquete java.io agrupa al conjunto de clases e interfaces necesarios para procesar archivos.
Es necesario utilizar clases de este paquete; por consiguiente, se debe incorporar al programa
con la sentencia import java.io.*.
Información de un archivo
Con los métodos de la clase File se obtiene información relativa al archivo o ruta con que se ha inicializado
el objeto. Así, antes de crear un flujo para leer de un archivo es conveniente determinar si el
archivo existe; en caso contrario no se puede crear el flujo. A continuación se exponen los métodos
más útiles para conocer los atributos de un archivo o un directorio.
public boolean exists( )
Devuelve true si existe el archivo (o el directorio).
public boolean canWrite( )
Devuelve true si se puede escribir en el archivo, si no es de sólo lectura.
public boolean canRead( )
Devuelve true si es de sólo lectura.
public boolean isFile( )
Devuelve true si es un archivo.
public boolean isDirectory( )
Devuelve true si el objeto representa a un directorio.
public boolean isAbsolute( )
Devuelve true si el directorio es la ruta completa.
public long length( )
Devuelve el número de bytes que ocupa el archivo. Si el objeto es un directorio devuelve cero.
public long lastModified( )
Devuelve la hora de la última modificación. El número devuelto es una representación interna
de la hora, minutos y segundos de la última modificación, sólo es útil para establecer
comparaciones con otros valores devueltos por el mismo método.
También dispone de métodos que modifican el archivo: cambiar de nombre, marcar de sólo lectura.
Para los directorios, tiene métodos para crear uno nuevo, obtener una lista de todos los elementos
(archivos o subdirectorios) del directorio. Algunos de estos métodos se escriben a continuación.
public String getName( )
Devuelve una cadena con el nombre del archivo o del directorio con que se ha inicializado
el objeto.
public String getPath( )
Devuelve una cadena con la ruta relativa al directorio actual.
public String getAbsolutePath( )
Devuelve una cadena con la ruta completa del archivo o directorio.
public boolean setReadOnly( )
Marca al archivo para que no se pueda escribir, de sólo lectura.
public boolean delete( )
Elimina el archivo o directorio (debe estar vacío).
public boolean renameTo(File nuevo)
Cambia el nombre del archivo con que ha sido inicializado el objeto por el nombre que contiene
el objeto pasado como argumento.
public boolean mkdir( )
Crea el directorio con el que se ha creado el objeto.
public String[ ] list( )
Devuelve un array de cadenas, cada una contiene un elemento (archivo o directorio) del directorio
con el que se ha inicializado el objeto.
los datos siguen disponibles para que otra aplicación pueda recuperarlos, para su consulta o modificación.
El proceso de archivos en Java se hace mediante el concepto de flujo (stream) o canal, o también
denominado secuencia. Los flujos pueden estar abiertos o cerrados, conducen los datos entre el programa
y los dispositivos externos. Con las clases y sus métodos proporcionados por el paquete java.io
se pueden tratar archivos secuenciales, de acceso directo, archivos indexados, etcétera.
Flujos y archivos
Un fichero (archivo) de datos, o simplemente un archivo, es una colección de registros relacionados
entre sí con aspectos en común y organizados para un propósito específico. Por ejemplo, un fichero
de una clase escolar contiene un conjunto de registros de los estudiantes de esa clase.
Un archivo en una computadora es una estructura diseñada para contener datos, los cuales están
organizados de tal modo que puedan ser recuperados fácilmente, actualizados o borrados y almacenados
de nuevo en el archivo con todos los cambios realizados.
Según las características del soporte empleado y el modo en que se han organizado los registros,
se consideran dos tipos de acceso a los registros de un archivo:
• acceso secuencial,
• acceso directo.
El acceso secuencial implica el acceso a un archivo según el orden de almacenamiento de sus registros,
uno tras otro.
El acceso directo implica el acceso a un registro determinado, sin que ello implique la consulta de
los registros precedentes. Este tipo de acceso sólo es posible con soportes direccionales.
En Java un archivo es, sencillamente, una secuencia de bytes, que son la representación de los datos
almacenados. Java dispone de clases para trabajar las secuencias de bytes como datos de tipos básicos
(int, double, String ...); incluso, para escribir o leer del archivo objetos. El diseño del archivo es el
que establece la forma de manejar las secuencias de bytes, con una organización secuencial, o bien de
acceso directo.
Un flujo (stream) es una abstracción que se refiere a una corriente de datos que fluyen entre un
origen o fuente (productor) y un destino o sumidero (consumidor). Entre el origen y el destino debe
existir una conexión o canal ( pipe) por la que circulen los datos. La apertura de un archivo supone establecer
la conexión del programa con el dispositivo que contiene el archivo; por el canal que comunica
el archivo con el programa van a fluir las secuencias de datos.
Abrir un archivo supone crear un objeto que queda asociado con un flujo. Al comenzar la ejecución
de un programa Java se crean automáticamente tres objetos de flujo, son tres canales por los que
pueden fluir datos, de entrada o de salida. Éstos son objetos definidos en la clase System:
• System.in; entrada estándar; permite la entrada al programa de flujos de bytes desde el teclado.
• System.out; salida estándar; permite al programa la salida de datos por pantalla.
• System.err; salida estándar de errores; permite al programa salida de errores por pantalla.
En Java, un archivo es simplemente un flujo externo, una secuencia de bytes almacenados en un
dispositivo externo (normalmente en disco). Si el archivo se abre para salida, es un flujo de archivo de
salida. Si el archivo se abre para entrada, es un flujo de archivo de entrada. Los programas leen o
escriben
en el flujo, que puede estar conectado a un dispositivo o a otro. El flujo es por tanto una abstracción
de tal forma que las operaciones que realizan los programas son sobre el flujo independientemente
del dispositivo al que esté asociado.
A tener en cuenta
El paquete java.io agrupa al conjunto de clases e interfaces necesarios para procesar archivos.
Es necesario utilizar clases de este paquete; por consiguiente, se debe incorporar al programa
con la sentencia import java.io.*.
Información de un archivo
Con los métodos de la clase File se obtiene información relativa al archivo o ruta con que se ha inicializado
el objeto. Así, antes de crear un flujo para leer de un archivo es conveniente determinar si el
archivo existe; en caso contrario no se puede crear el flujo. A continuación se exponen los métodos
más útiles para conocer los atributos de un archivo o un directorio.
public boolean exists( )
Devuelve true si existe el archivo (o el directorio).
public boolean canWrite( )
Devuelve true si se puede escribir en el archivo, si no es de sólo lectura.
public boolean canRead( )
Devuelve true si es de sólo lectura.
public boolean isFile( )
Devuelve true si es un archivo.
public boolean isDirectory( )
Devuelve true si el objeto representa a un directorio.
public boolean isAbsolute( )
Devuelve true si el directorio es la ruta completa.
public long length( )
Devuelve el número de bytes que ocupa el archivo. Si el objeto es un directorio devuelve cero.
public long lastModified( )
Devuelve la hora de la última modificación. El número devuelto es una representación interna
de la hora, minutos y segundos de la última modificación, sólo es útil para establecer
comparaciones con otros valores devueltos por el mismo método.
También dispone de métodos que modifican el archivo: cambiar de nombre, marcar de sólo lectura.
Para los directorios, tiene métodos para crear uno nuevo, obtener una lista de todos los elementos
(archivos o subdirectorios) del directorio. Algunos de estos métodos se escriben a continuación.
public String getName( )
Devuelve una cadena con el nombre del archivo o del directorio con que se ha inicializado
el objeto.
public String getPath( )
Devuelve una cadena con la ruta relativa al directorio actual.
public String getAbsolutePath( )
Devuelve una cadena con la ruta completa del archivo o directorio.
public boolean setReadOnly( )
Marca al archivo para que no se pueda escribir, de sólo lectura.
public boolean delete( )
Elimina el archivo o directorio (debe estar vacío).
public boolean renameTo(File nuevo)
Cambia el nombre del archivo con que ha sido inicializado el objeto por el nombre que contiene
el objeto pasado como argumento.
public boolean mkdir( )
Crea el directorio con el que se ha creado el objeto.
public String[ ] list( )
Devuelve un array de cadenas, cada una contiene un elemento (archivo o directorio) del directorio
con el que se ha inicializado el objeto.
viernes, 28 de junio de 2013
Declaración de un tipo parametrizado
Al nombre de la colección le sigue el tipo de los elementos entre paréntesis angulares (< tipo>):
Coleccion<tipo> v;
Si se parametrizan dos tipos, como ocurre con los mapas, se separan con coma:
Coleccion<tipoClave,tipoValor> cc;
Por ejemplo:
Stack<Double> pila;
SortedMap<Integer,String> mapa;
Realmente con el tipo parametrizado es como si se hubiera declarado otra clase, en consecuencia
las instancias de colecciones parametrizadas se crean con esa clase, es decir new
Coleccion<tipo> crea la instancia. Por ejemplo:
pila = newStack<Double>();
mapa = newTreeMap<Integer,String>();
Constantes Php
Usar constantes
Hasta ahora el capítulo se ha concentrado en las variables, que son útiles para almacenar y
cambiar valores durante el tiempo de vida del script PHP. Pero, ¿qué sucede si necesitas almacenar
un valor fijo, que permanezca estático durante el curso del script? Bien, en esos casos se
debe utilizar una constante.
Como su nombre lo sugiere, las constantes son contenedores de PHP para valores que
permanecen constantes y que nunca cambian. Por lo regular se utilizan para valores bien
conocidos de antemano y que son utilizados, sin cambio alguno, en diferentes lugares de la
aplicación. Buenos candidatos para constantes son los niveles de depuración y registro, los
números de versión, las marcas de configuración y las fórmulas.
Las constantes se definen en PHP con la función define(), la cual acepta dos argumentos:
el nombre de la constante y su valor. Los nombres de las constantes deben seguir las
mismas reglas que las variables, con una sola excepción: el prefijo $ no se requiere para los
nombres de constantes.
He aquí un ejemplo para definir y utilizar una constante dentro de un script:
<?php
// define constantes
define('PROGRAMA', 'The Matrix');
define('VERSION', 11.7);
// usar constantes
// datos de salida: 'Bienvenido a The Matrix (versión 11.7)'
echo 'Bienvenido a ' . PROGRAMA . ' (versión ' . VERSION . ')';
?>
Hasta ahora el capítulo se ha concentrado en las variables, que son útiles para almacenar y
cambiar valores durante el tiempo de vida del script PHP. Pero, ¿qué sucede si necesitas almacenar
un valor fijo, que permanezca estático durante el curso del script? Bien, en esos casos se
debe utilizar una constante.
Como su nombre lo sugiere, las constantes son contenedores de PHP para valores que
permanecen constantes y que nunca cambian. Por lo regular se utilizan para valores bien
conocidos de antemano y que son utilizados, sin cambio alguno, en diferentes lugares de la
aplicación. Buenos candidatos para constantes son los niveles de depuración y registro, los
números de versión, las marcas de configuración y las fórmulas.
Las constantes se definen en PHP con la función define(), la cual acepta dos argumentos:
el nombre de la constante y su valor. Los nombres de las constantes deben seguir las
mismas reglas que las variables, con una sola excepción: el prefijo $ no se requiere para los
nombres de constantes.
He aquí un ejemplo para definir y utilizar una constante dentro de un script:
<?php
// define constantes
define('PROGRAMA', 'The Matrix');
define('VERSION', 11.7);
// usar constantes
// datos de salida: 'Bienvenido a The Matrix (versión 11.7)'
echo 'Bienvenido a ' . PROGRAMA . ' (versión ' . VERSION . ')';
?>
Pedir un número entre 0 y 9.999 y decir cuantas cifras tiene
package bol01ej11;
public class Main {
public static void main(String[] args) {
int num;
System.out.print("Introduzca un número entre 0 y 99.999: ");
num=Entrada.entero();
if(num<10)
System.out.println("tiene 1 cifra");
else{
if(num<100)
System.out.println("tiene 2 cifras");
else{
if(num<1000)
System.out.println("tiene 3 cifras");
else{
if(num<10000)
System.out.println("tiene 4 cifras");
else{
if(num<100000)
System.out.println("tiene 5 cifras");
}
}
}
}
}
public class Main {
public static void main(String[] args) {
int num;
System.out.print("Introduzca un número entre 0 y 99.999: ");
num=Entrada.entero();
if(num<10)
System.out.println("tiene 1 cifra");
else{
if(num<100)
System.out.println("tiene 2 cifras");
else{
if(num<1000)
System.out.println("tiene 3 cifras");
else{
if(num<10000)
System.out.println("tiene 4 cifras");
else{
if(num<100000)
System.out.println("tiene 5 cifras");
}
}
}
}
}
Pedir tres números y mostrarlos ordenados de mayor a menor.
package bol01ej10;
public class Main {
public static void main(String[] args) {
int a,b,c;
System.out.print("Introduzca primer número: ");
a=Entrada.entero();
System.out.print("Introduzca segundo número: ");
b=Entrada.entero();
System.out.print("Introduzca tercer número: ");
c=Entrada.entero();
if(a>b && b>c)
System.out.println( a+", "+b+", "+c);
else{
if(a>c && c>b)
System.out.println(a+", "+c+", "+b);
else{
if(b>a && a>c)
System.out.println(b+", "+a+", "+c);
else{
if(b>c && c>a)
System.out.println(b+", "+c+", "+a);
else{
if(c>a && a>b)
System.out.println(c+", "+a+", "+b);
else{
if(c>b && b>a)
System.out.println(c+", "+b+", "+a);
}
}
}
}
}
}
}
public class Main {
public static void main(String[] args) {
int a,b,c;
System.out.print("Introduzca primer número: ");
a=Entrada.entero();
System.out.print("Introduzca segundo número: ");
b=Entrada.entero();
System.out.print("Introduzca tercer número: ");
c=Entrada.entero();
if(a>b && b>c)
System.out.println( a+", "+b+", "+c);
else{
if(a>c && c>b)
System.out.println(a+", "+c+", "+b);
else{
if(b>a && a>c)
System.out.println(b+", "+a+", "+c);
else{
if(b>c && c>a)
System.out.println(b+", "+c+", "+a);
else{
if(c>a && a>b)
System.out.println(c+", "+a+", "+b);
else{
if(c>b && b>a)
System.out.println(c+", "+b+", "+a);
}
}
}
}
}
}
}
Pedir dos números y decir cual es el mayor o si son iguales.
package bol01ej08;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
{
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
{
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
}
Pedir dos números y decir cual es el mayor.
package bol01ej07;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
// si ambos números son iguales diría que n2 es mayor que n1
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
// si ambos números son iguales diría que n2 es mayor que n1
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
Pedir dos números y decir si uno es múltiplo del otro
package bol01ej06;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1%n2==0)
System.out.println("Son múltiplos");
else
System.out.println("No son múltiplos");
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1%n2==0)
System.out.println("Son múltiplos");
else
System.out.println("No son múltiplos");
}
}
Pedir dos números y decir si son iguales o no. Java
package bol01ej04;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
System.out.println("No son iguales");
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
System.out.println("No son iguales");
}
}
Suscribirse a:
Entradas (Atom)