Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ficheros
Tipos de ficheros
Texto
Con formato:
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%"> </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
Importacin de datos
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
Exportacin de datos
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')
Apertura de ficheros II
'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
Lectura y escritura
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
Lectura y escritura
\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
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
v=fscanf(fid, '%g') Lee todo el fichero, numero a numero, volcandolo en el vector v Leidos= leidos correctamente 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
15
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
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
17
Posicionamiento en ficheros
'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
19