Sei sulla pagina 1di 19

Entrada y salida de datos

Informtica aplicada al medio ambiente curso 2010/2011

Ficheros

Tipos de ficheros

Texto

Con formato:

Ej.: Delimitado por comas (CSV) Delimitado por etiquetas: html

Formato libre Documentos de excel Imgenes Etc.


Informtica aplicada al Medio Ambiente 2

Binarios

Abstracciones

Flujo de informacin

Lectura o escritura (no ambas) Secuencial Ej.: Pgina web, documentos, etc. Fichero Memoria (modificin y uso) Fichero Requiere posicionamiento dentro del fichero Registros o bloques de tamao fijo Ej.: Base de datos Menos flexible, mayor tamao, eficiente
Informtica aplicada al Medio Ambiente 3

Acceso aleatorio

Ejemplo
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Google</title> .... <body ...> <form action="/search" name="f"> <table cellpadding="0" cellspacing="0"> <tbody> <tr valign="top"> <td width="25%">&nbsp;</td> <td align="center" nowrap="nowrap"><input name="hl" value="es" type="hidden"><input maxlength="2048" name="q" size="55" title="Buscar con Google" value=""><br> <input name="btnG" value="Buscar con Google" type="submit"><input name="btnI" value="Voy a tener suerte" type="submit"></td> .... </form> .... </body> </html>
Informtica aplicada al Medio Ambiente 4

Uso simple de ficheros en MATLAB

Importacin de datos

load: Nmeros separados por espacios-> matriz


Puede cargar desde ficheros .mat o ASCII load ('fichero .mat' [, var1, var2, varN ]) load('fichero ascii') %carga matrix de nmeros

csvread Hojas de clculo dlmread Nmeros, cualquier separador textread para leer celdas, varios tipos textscan Ms complejo y potente que textread xmlread Formatos XML Document Object Model
Informtica aplicada al Medio Ambiente 5

Uso simple de ficheros en MATLAB

Exportacin de datos

save: Guarda datos para ser cargados con load

save ('fichero', variables...)

csvwrite dlmwrite Nmeros, cualquier separador xmlwrite Guarda en formato XML

Informtica aplicada al Medio Ambiente

Uso general de ficheros


1.Abrir

fopen fload, fwrite, fread, fscanf, fprintf... fclose

2.Lectura y escritura

3.Cerrar

Hay que comprobar posibles errores al operar con ficheros Alternativas: Matlab(simple) y estilo C (potente)
Informtica aplicada al Medio Ambiente 7

Apertura de ficheros

fid= fopen('nombre de fichero') Fid es un identificador de fichero, se utilizar en el resto de operaciones -1 == error ferror(fid) muestra el ltimo error con el fichero identificado por fid [fid, mensaje] = fopen('fichero')

Devuelve el fid y el mensaje en caso de error


Informtica aplicada al Medio Ambiente 8

Apertura de ficheros II

[fid, msg]=fopen('nombre', 'modo') Modo:


'r' fichero existente para lectura 'w' escritura, borra el contenido previo 'a' escritura, aadiendo al final del fichero 'r+' fichero existente, lectura y escritura 'w+' lectura y escritura, borrando el contenido previo 'a+' lectura y escritura, al final del fichero
Informtica aplicada al Medio Ambiente 9

fopen y fclose

fids= fopen('all') obtiene en un vector todos los id de fichero [ nombre, permiso ] = fopen(fid)

Devuelve el nombre y permisos del fichero identificado por fid Devuelve -1 en caso de error

fclose(fid) cierra el fichero fid

fclose('all') cierra todos los ficheros


Informtica aplicada al Medio Ambiente 10

Lectura y escritura

fprintf(fid, 'formato', variables...)

Escribe las variables en el fichero siguendo el formato indicado Si se omite fid escribe en pantalla %d %i: Decimal con signo %o %u, %x: octal, sin signo, hexadecimal, %E,e: Double precisin, notacin [-]d.dddd E(+|-)dd E(+|-) %f: [-]ddd.ddd; %g: usa %e o %f segn el caso %s: cadena de caracteres
Informtica aplicada al Medio Ambiente 11

Formato: cadena de conversin estilo C


Lectura y escritura

Longitud y decimales: %l.d antes del modificador Delimitadores


\n: salto de linea \r: retorno de carro \t: tabulador \b: retroceso (backspace) \\: para imprimir \ (carcter de escape)
Informtica aplicada al Medio Ambiente 12

Ejemplo

fprintf(fid, 'El valor es: %8.2f\n', y) Imprimiendo vectores


v=[1:10] fprintf(fid, '%d\n', v) Se recorre por columnas, siguiendo el orden en que se almacenan o indexan las matrices x= 0:.1:1; y=[x; exp(x)]; % y tiene dos filas fprintf(fid, '%f %f\n', y); %cada fila se imprime como una columna
Informtica aplicada al Medio Ambiente 13

Imprimiendo matrices

Lectura

A= fscanf (fid, 'formato')

v=fscanf(fid, '%g') Lee todo el fichero, numero a numero, volcandolo en el vector v Leidos= leidos correctamente Dimension

[A, leidos] = fscanf(fid, 'formato', dimension)


n= n elementos en un vector columna inf=todos los elementos [M, N] Rellena la matriz MxN por columnas. N puede ser inf
Informtica aplicada al Medio Ambiente 14

Ejemplo

fid=fopen('exp.txt'); A= fscanf (fid, '%g %g', [2, inf]) lee el fichero por pares y los guarda en dos filas fclose(fid); A= A' %calculamos la traspuesta para tenerlo en columnas

Informtica aplicada al Medio Ambiente

15

Lectura por lineas

linea=fgetl(fid) lee linea a linea (sin guardar \n). -1 si llega al final de fichero (se puede comprobar con ~ischar(linea) fgets(fid) lee la siguiente linea, incluyendo \n fgets(fid, nchar) lee nchar caracteres mximo de la siguiente linea

Informtica aplicada al Medio Ambiente

16

Ficheros binarios

fwrite (fid, A, 'precision') [A, leidos]= fread(fid, dimension, 'precision') Precision = tipo de dato a leer o escribir. 'int4', 'short', 'double' etc. Dimension

N, inf, o MxN, igual que en fscanf

Informtica aplicada al Medio Ambiente

17

Posicionamiento en ficheros

fseek (fid, n, 'origin') Origin:


'bof' o -1: Bottom of file 'cof' o 0: Current of file 'eof' o 1: End of file

n es relativo a origen, positivo o negativo ftell(fid) posicin actual (0=comienzo) feof(fid) indica si est al final frewind(fid) vuelve al comienzo
Informtica aplicada al Medio Ambiente 18

Ejemplo
A=[1:10]; fid=fopen('tmp.bin', 'w') fwrite(fid, A, 'short') fclose(fid) fid=fopen('tmp.bin', 'r') n=ftell(fid) dato=fread(fid, 1, 'short') n=ftell(fid) fseek(fid, 6, 'bof') n=ftell(fid) dato=fread(fid, 1, 'short') fid = 7 ans = 10 ans = 0 fid = 7 n=0 dato = 1 n= 2 ans = 0 n= 6 dato = 4

Informtica aplicada al Medio Ambiente

19

Potrebbero piacerti anche