13-Unidad 4: Manejo de archivos y seguimiento del proyecto
1. Unidad 4: Manejo de
archivos y seguimiento del
proyecto
Autor(es):
Ciencias de la Ingeniería
Carrera de Sistemas
Programación Orientada a Objetos
Mg. Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Laguas@uisrael.edu.ec
Aguaszoft@Outlook.es
2. “Ser grande en las cosas pequeñas, ser
noble y heroica en los detalles insípidos
de la vida cotidiana, es una virtud tan
rara como ser digna de canonización.”
(Anónimo)
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Programación Orientada a Objetos
3. Resultado de Aprendizaje
• Analizar metodologías y herramientas tecnológicas, que
mejor se ajusten a las necesidades de las organizaciones.
7. Flujo
• Es una secuencia de bytes (carácteres)
que se mueve desde una fuente hacia un
destino a través de una trayectoria de
comunicación
Fuente
Destino
9. Lectura/Escritura de flujos
Abrir flujo
Cerrar flujo
Leer mientras
exista información
Abrir flujo
Cerrar flujo
Escrbir mientras
exista información
10. Ejemplo
import java.io.*;
public class LeeArchivo1 {
public static void main(String[] args) throws IOException {
FileInputStream leeArchivo = new FileInputStream(args[0]);
int caracter;
while ((caracter = leeArchivo.read()) != -1)
System.out.print((char) caracter);
leeArchivo.close();
}
}
11. Ejemplo
import java.io.*;
public class LeeArchivo1 {
public static void main(String[] args) throws IOException {
FileInputStream leeArchivo = new FileInputStream(args[0]);
int caracter;
while ((caracter = leeArchivo.read()) != -1)
System.out.print((char) caracter);
leeArchivo.close();
}
}
leeArchivo.read()
A3
5C
23
DD 4A 2D 21 8F BC A3 34
65
B2
CC
12. Jerarquía de flujos
• La mayoría de las clases de flujos se derivan de
InputStream y OutputStream
• Esto permite utilizar clases que son más
adecuadas a una tarea particular, como en el
ejemplo anterior, en lugar de utilizar un flujo
genérico y nosotros adecuarlo por programación
• InputStream y OutputStream nos dan
algunos métodos genéricos para lectura y
escritura de bytes. Las subclases nos dan los
métodos particulares que son más apropiados
dependiendo de la fuente o destino
16. read()
• public int read() throws IOException
o Lee un byte del flujo de entrada y lo regresa
o Regresa -1 si se alcanza el final del flujo
o Se bloquea (espera) hasta que existan datos
disponibles
o Arroja la excepción IOException si ocurre un error
durante la lectura
o Normalmente reprogramado por las subclases
17. read(byte[])
• public int read(byte[] b) throws IOException
o Lee una secuencia de bytes del flujo de entrada y los
pone en el arreglo especificado
o Regresa la cantidad de bytes leidos
o Regresa -1 si es que se alcanzó el final del flujo de
entrada
o Se bloquea hasta que existan datos disponibles
o Arroja la excepción IOException si ocurre un error
durante la lectura
18. read(byte[],int,int)
• public int read(byte[] b,int des,int lon)
throws IOException
o Lee una secuencia de lon bytes y los pone en el
arreglo b a partir del índice des
o Regresa el número de bytes leidos
o Regresa -1 si es que se alcanzó el final del flujo de
entrada
o Se bloquea hasta que encuentre datos disponibles
o Arroja la excepción IOException si ocurre un error
durante la lectura
19. skip(long)
• public long skip(long n) throws IOException
o Se brinca (y descarta) un número de bytes
especificado por n
o Regresa el número de bytes que realmente se
descartaron
o Regresa -1 si se alcanzó el final del flujo de entrada
o Arroja la excepción IOException si ocurre un error
durante el salto
20. available()
• public int available() throws IOException
o Regresa el número de bytes que se pueden leer del
flujo de entrada sin que la operación de lectura
bloquee la secuencia del programa
o Se utiliza para "ver", sin leer, cuantos datos hay
disponibles
o En algunos sistemas el resultado arrojado no es
confiable
o Arroja la excepción IOException si ocurre un error
durante la operación
21. close()
• public void close() throws IOException
o Cierra el flujo de entrada y libera todos los recursos
asociados (asignados por el sistema operativo) con el
flujo
o Siempre es conveniente cerrar los flujos para
asegurarse que el procesamiento del flujo por parte
del sistema termine correctamente
o Arroja la excepción IOException si ocurre un error
durante la operación
22. mark(int)
• public synchronized void mark(int readlimit)
o Marca la posición actual en el flujo de entrada, para
posteriormente regresar a ella en caso necesario
o Regresa el número de bytes que se pueden leer después
de la marca antes de que la marca sea invalidada por la
capacidad del buffer
o boolean markSupported() indica si el flujo de
entrada permite marcas
o void reset() reposiciona al flujo en la última posición
marcada
24. write(...)
• public void write(int b) throws IOException
o Escribe un byte al flujo de salida
• public void write(byte[] b)
throws IOException
o Escribe una secuencia de bytes al flujo de salida
• public void write(byte [] b,int des,int lon)
throws IOException
o Escribe lon bytes del arreglo b a partir de des
• Se bloquean hasta que el o los datos sean
escritos
• Arrojan IOException en caso de error durante
la escritura
25. flush()
• public void flush() throws IOException
o Ocasiona que todo dato que esté en el buffer sea
escrito inmediatamente al flujo de salida
o Se tiene que reprogramar en las subclases porque
en OutputStream no hace nada
• public void close() throws IOException
o Cierra el flujo de salida y libera los recursos
asociados por el sistema
close()
26. Referencias
Bibliográficas
• LEOBARDO, L. (2006). METODOLOGÍA DE
LA PROGRAMACIÓN ORIENTADA A
OBJETOS, México, Alfaomega.
• LOPEZ, J., ALBERCA G. (2009): GUÍA DE
FUNDAMENTOS DE LA PROGRAMACIÓN,
Loja – Ecuador, UTPL
27. Gracias
Mg. Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Laguas@uisrael.edu.ec
Aguaszoft@Outlook.es