Subido por Mariana Obando Gutiérrez

archivos poo

Anuncio
Eblinn Mariana Obando Gutiérrez
20192005009
ARCHIVOS
Los programas usan variables para almacenar información, sin embargo, cuando se cierran todo
desaparece. Pero, para muchas aplicaciones, es importante poder almacenar datos de manera
permanente.
Cuando se desea guardar información más allá del tiempo de ejecución de un programa lo habitual
es organizar esa información en uno o varios ficheros almacenados en algún soporte de
almacenamiento persistente. Otras posibilidades como el uso de bases de datos utilizan archivos
como soporte para el almacenamiento de la información.
Técnicamente, un archivo es un conjunto de bits almacenados en un dispositivo, y accesible a través
de un camino de acceso que lo identifica.
La clase file:
Es especialmente útil para recuperar información acerca de un archivo o directorio de un disco. Los
objetos de la clase File no abren archivos ni proporcionan herramientas para procesarlos. No
obstante, los objetos File se utilizan frecuentemente con objetos de otras clases de java.io para
especificar los archivos o directorios que van a manipularse.

Creación de objetos File
La clase File proporciona cuatro constructores. El constructor: public File( String nombre );
especifica el nombre de un archivo o directorio que se asociará con el objeto File. El nombre
puede contener información sobre la ruta, así como el nombre de un archivo o directorio. La
ruta de un archivo o directorio especifica su ubicación en el disco. La ruta incluye algunos o
todos los directorios que conducen a ese archivo o directorio. Una ruta absoluta contiene todos
los directorios, empezando con el directorio raíz, que conducen a un archivo o directorio
específi co. Cada archivo o directorio en un disco duro específico tiene el mismo directorio raíz
en su ruta. Una ruta relativa normalmente empieza desde el directorio en el que la aplicación
empezó a ejecutarse y es, por lo tanto, una ruta “relativa” al directorio actual.
Archivos de texto: Los archivos de texto plano son aquellos que están compuestos únicamente por
texto sin formato, solo caracteres. estos caracteres se pueden codificar de distintos modos
dependiendo de la lengua usada. Se les conoce también como archivos de texto llano o texto simple
por carecer de información destinada a generar formatos y tipos de letra.
Archivo binario: Un archivo binario es un archivo informático que contiene información de
cualquier tipo, codificada en forma binaria para el propósito de almacenamiento y procesamiento de
ordenadores. Muchos formatos binarios contienen partes que pueden ser interpretados como texto.
Un archivo binario que solo contiene información de tipo textual sin información sobre el formato
del mismo, se dice que es un archivo de texto plano. Habitualmente se contraponen los términos
archivo binario y archivo de texto de forma que los primeros no contienen solamente texto.
Acceso a los archivos:



Acceso secuencial: En primer lugar se va a ver la lectura y escritura de datos de tipo
carácter. Un carácter puede ser leído de un archivo (abierto previamente con el modo
adecuado para permitir leer de él) mediante la función getc:
int getc(FILE *pf)
La función getc tiene como único argumento el descriptor de fichero pf y devuelve el
carácter leído del fichero en forma de entero sin signo. El hecho de que la función devuelva
un entero carece de importancia desde el punto de vista práctico ya que, al realizar la
asignación a una variable de tipo char, se realiza la conversión de tipo automáticamente.
Dado que los archivos son de acceso secuencial, tras la apertura del fichero, el carácter
devuelto por getc será el primer carácter del archivo. Si se vuelve a utilizar la función getc,
el carácter devuelto será el siguiente y así sucesivamente.
El descriptor de fichero apunta al primer carácter del archivo cuando éste se abre y apunta
al siguiente cada vez que se lee o escribe algun carácter.
Acceso aleatorio: La utilización de ficheros de acceso secuencial sólo permite leer datos
desde el principio del fichero o escribir datos al principio o al final del mismo. Es necesario
introducir nuevos mecanismos para tener la posibilidad de acceder a posiciones intermedias
de un fichero.
Todas las operaciones vistas para el manejo de ficheros de acceso secuencial son válidas
para los archivos de acceso aleatorio. El único elemento nuevo que se incorpora en este tipo
de acceso a ficheros es una función capaz de posicionar el puntero del fichero que devuelve
la función fopen en distintas partes del fichero para acceder a datos intermedios.
Cuando se abre un fichero para lectura, el campo mencionado de la variable pt declarada de
tipo FILE es 0, indicando de esta manera que la primera lectura que se haga será del primer
byte.
La función fseek( ) permite modificar el valor del puntero pf para que apunte a cualquier
byte del fichero y tener de esta manera un acceso aleatorio. El manejo de archivos de acceso
aleatorio no implica más que añadir la nueva función fseek a las ya existentes para archivos
de acceso secuencial. Su especificación es la siguiente:
fseek(FILE *pf, long int desplazamiento, int modo)
donde:
pf: es el puntero o descriptor de fichero,
desplazamiento: es el desplazamiento en bytes a efectuar, modo: es el punto de referencia
que se toma para efectuar dicho desplazamiento. En el fichero de cabecera <stdio .h> hay
tres constantes definidas:
o SEEK_SET
(0)
o SEEK_CUR
(1)
o SEEK_END
(2)
Los valores entre paréntesis indican su valor. El tercer parámetro (modo) de la función
fseek puede contener una cualquiera de las constantes simbólicas indicando que el
desplazamiento se hará a partir del principio del fichero (SEEK_SET), a partir del la
posición actual de pf (SEEK_CUR) o a partir del final del fichero (SEEK_END).
Caracteres: Es la información almacenada dentro de un archivo de texto, de modo que son los
datos que se procesan al implementar un archivo.
Lectura de archivos: Para leer datos de un archivo, hay que abrirlo de la siguiente manera:
archivo = open(nombre)
nombre es un string que tiene el nombre del archivo. archivo es el archivo lógico a través del que se
manipulará el archivo. Si el archivo no existe, ocurrirá un error de entrada y salida (IOError). Es
importante recordar que la variable archivo es una representación abstracta del archivo, y no los
contenidos del mismo. La manera más simple de leer el contenido es hacerlo línea por línea. Para
esto, basta con poner el archivo lógico en un ciclo for:
for linea in archivo:
# hacer algo
Una vez que los datos han sido leídos del archivo, hay que cerrarlo:
archivo.close()
De modo que, el programa resulta de la siguiente manera:
archivo = open('nombre de archivo.txt')
for linea in archivo:
print linea[0]
archivo.close()
Nomenclatura de datos: Todos los formatos de archivo o extensiones están escritos en mayúscula
en la columna de la izquierda. A su derecha y en la misma línea todos ellos poseen una explicación
adjunta o bien los programas recomendados para su uso. Todas las extensiones más importantes y
que requieren una explicación más completa están marcados con un asterisco (*) y ampliadas en la
parte final de su categoría correspondiente.
Flujos de datos
Las entradas y las salidas de datos en java se manejan mediante streams (flujos de datos). Un stream
es una conexión entre el programa y la fuente (lectura) o el destino (escritura) de los datos. La
información se traslada en serie a través de esta conexión.
En Java existen 4 jerarquías de clases relacionadas con los flujos de entrada y salida de datos.
OutputStream (para escritura), las cuales manejan los flujos de datos como stream
de bytes.
escritura), las cuales manejan stream de caracteres.
Todas las clases de Java relacionadas con la entrada y salida se agrupan en el paquete
java.io.
Clase File
La clase File permite manejar archivos o carpetas, es decir, crear y borrar tanto archivos
como carpetas, entre otras funciones.
Cuando se crea una instancia de la clase File no se crea ningún archivo o directorio, solo se
crea una referencia hacia un objeto de este tipo. La creación de archivos o carpetas se
realizan de manera explícita, invocando a los métodos respectivos. A continuación se
enlistan los métodos más útiles que posee la clase File:
)
FileOutputStream
La clase FileOutputStream permite crear y escribir un flujo de bytes en un archivo de
texto plano. Esta clase hereda de la clase OutputStream. Sus constructores más comunes
son:
FileOutputStream (String nombre)
FileOutputStream (String nombre, boolean añadir)
FileInputStream
FileInputStream permite leer flujos de bytes desde un archivo de texto plano. Hereda de
la clase InputStream. Sus constructores más comunes son:
FileInputStream(String nombre)
FileInputStream(File archivo)
FileWriter: La clase FileWriter hereda de Writer y permite escribir un flujo de caracteres en un
archivo de texto plano.
BufferedWriter: La clase BufferedWriter también deriva de la clase Writer y permite crear un
buffer para realizar una escritura eficiente de caracteres desde la aplicación hacía el archivo destino.
PrintWriter: La clase PrintWriter, que también deriva de Writer, permite escribir de forma sencilla
en un archivo de texto plano. Posee los métodos print y println, idénticos a los de System.out, y el
método close( ), el cual cierra el stream de datos.
FileReader: Las clases Reader se utilizan para obtener los caracteres ingresados desde una fuente.
La clase FileReader hereda de Reader y permite leer flujos de caracteres de un archivo de texto
plano.
InputStreamReader: InputStreamReader es una clase que deriva de Reader que convierte los
streams de bytes a streams de caracteres. System.in es el objeto de la clase InputStream el cual
recibe datos desde la entrada estándar del sistema (el teclado).
BufferedReader: La clase BufferedReader, que también deriva de la clase Reader, crea un buffer
para realizar una lectura eficiente de caracteres. Dispone del método readLine que permite leer una
línea de texto y tiene como valor de retorno un String.
StringTokenizer: La clase StringTokenizer permite separar una cadena de texto por palabras
(espacios) o por algún otro carácter. La clase StringTokenizer pertenece al paquete java.util.
Scanner: La clase Scanner permite leer flujos de bytes desde la entrada estándar. Pertenece al
paquete java.util. Los métodos principales de esta clase son next( ) y hasNext( ). El método next( )
obtiene el siguiente elemento del flujo de datos. El método hasNext( ) verifica si el flujo de datos
todavía posee elementos, en caso afirmativo regresa true, de lo contrario regresa false.
Console: La clase Console permite recibir flujos de datos desde la línea de comandos (entrada
estándar). Se encuentra dentro del paquete java.io. Entre los métodos importantes que posee se
encuentran:
(enter).
(enter), ocultando los caracteres como lo hace el sistema operativo que se utilice.
Bibliografía:
o
o
o
o
o
Universidad distrital francisco de caldas. Ingenieria de sistemas. Archivos en java
(2013) [Online]. Available:
https://ingenieria.udistrital.edu.co/pluginfile.php/39198/mod_resource/content/1/7.%20
Archivos%20en%20Java.pdf#:~:text=Archivos%20en%20Java.,2013&text=Una%20tarea%20com%C3%BAn%20en%20programaci%C3%B3n,propio
%20conjunto%20espec%C3%ADfico%20de%20m%C3%A9todos
Microsoft Word – 4. Manejo básico de archivos en Java.docx. J.M. Gimeno y J.L.
González (2011) [Online]. Available:
http://ocw.udl.cat/enginyeria-i-arquitectura/programacio-2/continguts-1/4-manejobai81sico-de-archivos-en-java.pdf
Geeknetic – software. Los archivos [Online]. Available:
https://www.geeknetic.es/Guia/91/Los-archivos-tipos-extensiones-y-programas-parasu-uso.html
Universidad nacional autonoma de Mexico, facultad de ingeniería. M. Angélica
Nakayama C. e Ing. Jorge A. Solano Gálvez. Manejo de archivos [Online]. Available:
http://profesores.fi-b.unam.mx/annkym/LAB/poo_p11.pdf
Deitel Paul, Deitel Harvey. Como programar en Java, Septima Edición. México
Pearson Educación, 2008
Descargar