Ficheros

Anuncio
Entrada y salida de datos
Informática 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
Binarios



Documentos de excel
Imágenes
Etc.
Informática aplicada al Medio Ambiente
2
Abstracciones


Flujo de información

Lectura o escritura (no ambas)

Secuencial

Ej.: Página web, documentos, etc.

Fichero → Memoria (modifición y uso) → Fichero
Acceso aleatorio

Requiere posicionamiento dentro del fichero

Registros o bloques de tamaño fijo

Ej.: Base de datos

Menos flexible, mayor tamaño, eficiente
Informática aplicada al Medio Ambiente
3
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>
Informática aplicada al Medio Ambiente
4
Uso simple de ficheros en
MATLAB

Importación de datos

load: Números separados por espacios-> matriz



Puede cargar desde ficheros .mat o ASCII
load ('fichero .mat' [, var1, var2, varN ])
load('fichero ascii') %carga matrix de números

csvread → Hojas de cálculo

dlmread → Números, cualquier separador

textread → para leer celdas, varios tipos

textscan → Más complejo y potente que textread

xmlread → Formatos XML → Document Object
Model
Informática aplicada al Medio Ambiente
5
Uso simple de ficheros en
MATLAB

Exportación de datos

save: Guarda datos para ser cargados con load

save ('fichero', variables...)

csvwrite

dlmwrite → Números, cualquier separador

xmlwrite → Guarda en formato XML
Informática aplicada al Medio Ambiente
6
Uso general de ficheros
1.Abrir

fopen
2.Lectura y escritura

fload, fwrite, fread, fscanf, fprintf...
3.Cerrar



fclose
Hay que comprobar posibles errores al operar
con ficheros
Alternativas: Matlab(simple) y estilo C (potente)
Informática 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
Informática 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, añadiendo 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
Informática aplicada al Medio Ambiente
9
fopen y fclose


fids= fopen('all') obtiene en un vector todos los
id de fichero
[ nombre, permiso ] = fopen(fid)


fclose(fid) → cierra el fichero fid


Devuelve el nombre y permisos del fichero
identificado por fid
Devuelve -1 en caso de error
fclose('all') → cierra todos los ficheros
Informática 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
Formato: cadena de conversión estilo C

%d %i: Decimal con signo

%o %u, %x: octal, sin signo, hexadecimal,

%E,e: Double precisión, notación [-]d.dddd E(+|-)dd
E(+|-)

%f: [-]ddd.ddd; %g: usa %e o %f según el caso

%s: cadena de caracteres
Informática aplicada al Medio Ambiente
11
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 \ (carácter de escape)
Informática 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)
Imprimiendo matrices



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
Informática aplicada al Medio Ambiente
13
Lectura

A= fscanf (fid, 'formato')


v=fscanf(fid, '%g') → Lee todo el fichero, numero a
numero, volcandolo en el vector v
[A, leidos] = fscanf(fid, 'formato', dimension)

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
Informática 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
Informática 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
máximo de la siguiente linea
Informática 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
Informática 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) → posición actual (0=comienzo)

feof(fid) → indica si está al final

frewind(fid) → vuelve al comienzo
Informática 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
Informática aplicada al Medio Ambiente
19
Descargar