TEMA 9. Agenda. Ficheros

Documentos relacionados
Entrada y Salida de datos

Resumen de Ficheros en Java. FileOutputStream(String nombre_fichero, boolean añadir)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

Programación Orientada a Objetos. Tema 7: Persistencia

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

Entrada y Salida con Java

Parte I: Programación en un lenguaje orientado a objetos

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

Resumen Clase Anterior Ejercicio Clase 16 Archivos Ejemplo. ING1310 Introducción a la Computación. Archivos

Tema 13: Manejo de archivos en lenguaje C

Tema 3: Entrada/Salida de Ficheros

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Práctica 4: Herencia. Objetivos:

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

5. Cadenas y Entrada/Salida

Capítulo 3. Clasificación en Memoria Secundaria

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

Persistencia. Persistencia significa trascender en el tiempo y/o en el espacio

Java IO - Streams. OutputStream os = new OutputStream(); Departamento de Matemáticas y Computación Grado en Informática Programación de Bases de Datos

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

Universidad de Cantabria

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

ALGORITMOS Y PROGRAMACIÓN I Unidad 3

Prácticas de Programación

Contenidos. Archivos en C++ Archivos en C++ Introducción

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

PROGRAMACIÓN EN JAVA

Manipulación de archivos estructurados

Fundamentos de Programación. Archivos (Ficheros)

Persistencia y Serialización en Java con Archivos

Información de la lectura en un programa.

Práctica III: Streams, Readers y Writers

Fundamentos de Programación

Definición de Memoria

Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Programación concurrente y semáforos en Java

Entrada y salida de datos. Entrada y salida de datos. Flujos estándar. Flujos estándar. Operación y flujos estándar en java

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Unidad 3: Gestión de Archivos

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

TEMA 2. Agenda. Fundamentos de JAVA

Serialización de Objetos en Java. Dra. Maricela Bravo

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

String s = t.readline() 4. Si el valor leído desde teclado, se requiere almacenar en una variable de un tipo diferente a

Programación I Ficheros de texto

Ficheros Contenido del Tema

Informática Ingeniería en Electrónica y Automática Industrial

Objetivos y Temario CURSO JAVA PARA DESARROLLO ANDROID

Estructura de Datos: Archivos

Estructuras Dinámicas de datos.

IIC1103 Introducción a la Programación. Ayudantía: Archivos

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Ampliación de Sistemas Operativos Trabajo voluntario Tema 1 Francisco Charte Ojeda ENTRADA/SALIDA EN C++

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

ESTRUCTURAS BÁSICAS Concepto de datos estructurados.

LENGUAJE. Tema 8 Ficheros

Introducción. Tema 10a. Introducción. Memoria RAM. Memoria RAM HDD

Principios de Computadoras II

MicroSoft Access (2 de 4)

2. ESTRUCTURAS BÁSICAS

Estructura de datos y Programación

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

Esta unidad describe cómo se almacena la información en los dispositivos magnéticos.

El nivel Interno. Índice Tema 3

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Partes de una computadora. Conceptos Generales. Elementos de Computación (CU) Computación (TIG) El Hardware de una computadora

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Gestor de bases de datos MicroSoft Access (2 de 4)

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

1. Partes del ordenador. Nuevas Tecnologías y Sociedad de la Información

Instituto Técnico Jesús Obrero 4to año Programación Profesor: Luis Vallenilla

Objetivos. Índice. 1. Paquetes

CAPÍTULO 9 A R C H I V O S (FLUJOS)

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011

Entrada/Salida. Independencia del SO. La clase File. Métodos de instancia I. Ficheros. La clase File

TIPO DE DATO ABSTRACTO (TDA)

Curso Completo de Visual Basic 6.0

INT 21H Función 02H Salida de Carácter LLAMADA: AH = 02H DL = Código ASCII a enviar al dispositivo de salida. DEVUELVE: NADA.

Tema 4. Ficheros. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tipos Recursivos de Datos

Federico Peinado

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Algoritmos y Programación I

Nota: en el directorio de prácticas y en PoliformaT puedes descargar los ficheros de código fuente de los ejemplos que aparecen en este anexo.

Dra. Jessica Andrea Carballido

06 Introducción al procesamiento de imágenes BMP con ANSI C

CAPÍTULO 9 SERIALIZACIÓN (ALMACENAMIENTO DE OBJETOS EN ARCHIVOS)

Operaciones de E/S en ANSI C

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

RESUMEN DEL CONTENIDO

Tema 3: Ficheros en C++ Índice. Notas. Programación 2. Curso Notas

Arreglos de objetos y ArrayList. Archivos en Java Transversal Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

GESTION DE ENTRADA Y SALIDA

Transcripción:

TEMA 9 Ficheros V1.0 Manuel Pereira González Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen 1

Introducción: Conceptos Básicos de Ficheros Estructuras de Datos estudiadas: Tipos: Arrays, Listas, etc. Almacenadas en memoria principal (RAM) Rápida Volátil Tamaño Limitado Para tratar grandes volúmenes de información es necesario almacenarla en memoria secundaria (Disco Duro, CD-ROM, Disquete, Disco USB, etc.) Los datos agrupados en estructuras denominadas archivos o ficheros (File en inglés) Introducción: Conceptos Básicos de Ficheros Un archivo o fichero es una colección de datos homogéneos almacenados en un soporte físico del computador que puede ser permanente o volátil. Datos homogéneos: Almacena colecciones de datos del mismo tipo (igual que arrays/vectores) Cada elemento almacenado en un fichero se denomina registro, que se compone de campos. Puede ser almacenado en diversos soportes (Disco duro, disquete, ) 2

Introducción: Conceptos Básicos de Ficheros Ejemplos de archivos o ficheros: Archivo Biblioteca Censo Archivo de coches Registro Libro Persona Coche Campos Título, Autor, ISBN, Nombre, Apellidos, DNI, Dirección, Marca, Color, El tamaño de un fichero es variable puede crecer según se van insertando registros Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen 3

Introducción: Operaciones sobre Ficheros Tipos de operaciones Operación de Creación Operación de Apertura. Varios modos: Sólo lectura Sólo escritura Lectura y Escritura Operaciones de lectura / escritura Operaciones de inserción / borrado Operaciones de renombrado / eliminación Operación de desplazamiento dentro de un fichero Operación de cierre Introducción: Operaciones sobre Ficheros Operaciones para el manejo habitual de un fichero: 1.- Crearlo (sólo si no existía previamente) 2.- Abrirlo 3.- Operar sobre él (lectura/escritura, inserción, borrado, etc.) 4.- Cerrarlo 4

Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen Introducción: Tipos de Fichero Clasificación de los ficheros según la organización de los registros en memoria: Organización Secuencial: Registros almacenados consecutivamente en memoria según el orden lógico en que se han ido insertando. Organización Directa o Aleatoria: El orden físico de almacenamiento en memoria puede no coincidir con el orden en que han sido insertados. Organización Indexada. Dos ficheros: Fichero de datos: Información Fichero de índice: Contiene la posición de cada uno de los registros en el fichero de datos 5

Introducción: Tipos de Fichero Clasificación de los ficheros según el acceso a la información almacenada: Acceso secuencial: Para acceder a un registro es necesario pasar por todos los anteriores. Ej: Cinta de Casete Acceso directo o aleatorio: Se puede acceder a un registro sin pasar por todos los anteriores. Ej: Disco Duro. Clasificación de los ficheros según el tipo de la información almacenada: Ficheros Binarios: Almacenan secuencias de dígitos binarios (ej: ficheros que almacenan enteros, floats, ) Ficheros de Texto: Almacenan caracteres alfanuméricos en un formato estándar (ASCII, Unicode, UTF8, UTF16, etc.). Pueden ser leídos y/o modificados por aplicaciones denominadas editores de texto (Ej: Notepad, UltraEdit, Editplus, etc.). Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen 6

Conceptos básicos de Entrada/Salida Streams: Canales, flujos de datos o tuberías. Entrada (InputStream) o Salida (OutputStream). Agrupados en el paquete java.io Dos jerarquías de clases independientes, una para lectura/escritura binaria (bytes) y otra para lectura/escritura de caracteres de texto (char) Conceptos básicos de Entrada/Salida Streams de bytes Streams de caracteres 7

Conceptos básicos de Entrada/Salida Métodos básicos de Reader: int read() int read(char cbuf[]) int read(char cbuf[], int offset, int length) Métodos básicos de InputStream: int read() int read(byte cbuf[]) int read(byte cbuf[], int offset, int length) Conceptos básicos de Entrada/Salida Métodos básicos de Writer: int write(int c) int write(char cbuf[]) int write(char cbuf[], int offset, int length) Métodos básicos de OutputStream: int write(int c) int write(byte cbuf[]) int write(byte cbuf[], int offset, int length) Los Streams se abren automáticamente al crearlos, pero es necesario cerrarlos explícitamente llamando al método close() cuando se dejan de usar 8

Conceptos básicos de Entrada/Salida PrintStream / PrintWriter se utilizan para escribir cadenas de texto. DataInputStream / DataOutputStream se utilizan para escribir/leer tipos básicos (int, long, float, ). Acceso a ficheros: Según el acceso: Acceso Secuencial: El más común. Puede ser: Acceso binario: FileInputStream / FileOutputStream Acceso a caracteres (texto): FileReader / FileWriter Acceso Aleatorio: Se utiliza la clase RandomAccessFile Conceptos básicos de Entrada/Salida La clase File puede usarse para representar el nombre de un archivo concreto, o los nombres de los archivos de un directorio. Para crear/abrir un fichero en Java se invoca a un constructor de la clase File. 9

Conceptos básicos de Entrada/Salida Conceptos básicos de Entrada/Salida 10

Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen Ficheros Binarios Leer/Escribir bytes en ficheros Streams de Entrada/Salida: FileInputStream / FileOutputStream 11

Ficheros Binarios Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen 12

Ficheros de Tipos Primitivos Leer/Escribir datos de tipos primitivos: int, long, float, etc. Streams de Entrada/Salida: DataInputStream / DataOutputStream Ficheros de Tipos Primitivos 13

Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen Ficheros de Texto Escribir / Leer cadenas de texto Se utilizan las clases Reader / Writer PrintWriter: Hereda de Writer, permite escribir texto en un OutputStream En el constructor recibe el OutputStream a utilizar Tiene métodos para escribir en forma de texto todos los tipos básicos y los Strings. Métodos duplicados para insertar retorno de carro al final del dato escrito (print / println) PrintStream es similar a PrintWriter, pero sus métodos están deprecados (la clase no, porque todavía se usa en System.out) -> Por defecto utilizar PrintWriter que es más moderna. 14

Ficheros de Texto Ficheros de Texto 15

Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen Ficheros de Acceso Aleatorio Se utiliza la clase RandomAccessFile No está basada en el concepto de flujos o Streams. No deriva de InputStream/OutputStream ni Reader/Writer Permite leer y escribir sobre el fichero, no es necesario dos clases diferentes Necesario especificar el modo de acceso al construir un objeto de esta clase: sólo lectura o lectura/escritura Dispone de métodos específicos de desplazamiento como seek(long posicion) o skipbytes(int desplazamiento) para poder moverse de un registro a otro del fichero, o posicionarse directamente en una posición concreta del fichero. 16

Ficheros de Acceso Aleatorio Constructores: RandomAccessFile(File f, String modoacceso) RandomAccessFile(String nombrearchivo, String modoacceso) modoacceso puede ser: r (sólo lectura) o rw (lectura y escritura). Métodos: void seek(long posicion): Sitúa el puntero de lectura/escritura en la posición indicada, desde el principio del fichero. long getfilepointer(): Devuelve la posición actual del puntero de lectura/escritura. int skipbytes(int desplazamiento): Desplaza el puntero desde la posición actual, el número de bytes indicado por desplazamiento long length(): Devuelve la longitud o tamaño del fichero en bytes Ficheros de Acceso Aleatorio 17

Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen Serialización Serialización: Posibilidad de escribir/leer Objetos java en Streams. Para poder serializar un objeto en java deben cumplirse los siguientes requisitos: Debe implementar la interfaz Serializable (se estudiarán las interfaces con más detenimiento en el siguiente tema). Todos los objetos incluidos en él tienen que implementar la interfaz Serializable Para escribir/leer objetos serializables a un Stream se utilizan las clases java ObjectInputStream / ObjectOutputStream. 18

Serialización Serialización 19

Serialización Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen 20

Algoritmos sobre ficheros Algoritmos de ordenación estudiados hasta ahora lo hacen en memoria. Si existe gran cantidad de datos, no se pueden tener todos a la vez en memoria. Entonces es necesario almacenar y ordenar los datos utilizando ficheros. Dos algoritmos para ordenar utilizando ficheros: Algoritmo de mezcla directa Algoritmo de mezcla natural Algoritmos sobre ficheros: Mezcla Directa Algoritmo de Mecla Directa: Dividir una secuencia inicial de datos en dos subcadenas y mezclar elemento a elemento de forma ordenada. El proceso se repite hasta que la secuencia inicial queda totalmente ordenada. Pasos: 1) Se divide la secuencia inicial de datos del fichero a en dos mitades b y c 2) Se mezclan b y c combinando elementos aislados para formar pares ordenados 3) La secuencia resultante se almacena en el fichero a y se repiten los pasos 1) y 2) para formar cuádruplos ordenados. 4) Se repiten los pasos anteriores para formar octetos ordenados, y así sucesivamente. 21

Algoritmos sobre ficheros: Mezcla Directa Ejemplo de Mecla Directa: Las comillas simples ( ) indican fin de tupla. Algoritmos sobre ficheros: Mezcla Natural Algoritmo de Mecla Natural: Se quiere ordenar el fichero c Se realizan sucesivas distribuciones y mezclas del fichero c en los ficheros a y b hasta lograr ordenar los datos. La distribución consiste en repartir la secuencia original en dos secuencias, de forma que se pasan alternativamente secuencias ordenadas (o tramos) de longitud máxima del fichero c a los ficheros a y b. La mezcla consiste en tomar una subsecuencia de a y otra de b y ordenarlas internamente para formar una sóla subsecuencia ordenada, y así con todos los pares de subsecuencias (una de a y otra de b). Si a y b tienen distinto número de subsecuencias, las restantes se añaden tal cual al fichero c sin mezclar. 22

Algoritmos sobre ficheros: Mezcla Natural Ejemplo de Mecla Natural: Las comillas simples ( ) indican fin de tupla. Agenda Introducción Conceptos Básicos de Ficheros Operaciones sobre ficheros Tipos de fichero Ficheros en Java Conceptos Básicos de Entrada/Salida Ficheros Binarios Ficheros de Tipos Primitivos Ficheros de Texto Ficheros de Acceso Aleatorio Serialización Algoritmos sobre Ficheros Resumen 23

Resumen: Para más información http://java.sun.com/docs/books/tutorial/ess ential/io/index.html http://elvex.ugr.es/decsai/java/pdf/c1- files.pdf http://home.cogeco.ca/~ve3ll/jatutor8.htm http://www.infcr.uclm.es/www/cmunoz/mytp/ficheros.pdf http://x500.cica.es/formacion/javatut/cap8 /fichero.html 24