Professional Documents
Culture Documents
MODULO
PROGRAMACION ORIENTADA A OBJETOS
CUARTO SEMESTRE
___________
FIRMA
INDICE
INTRODUCCION........................................................................................................................................................3
ARCHIVOS DE TEXTO..............................................................................................................................................4
APERTURA DE ARCHIVOS DE TEXTO...............................................................................................................5
LECTURA DE ARCHIVOS DE TEXTO..................................................................................................................6
RECORRIDO DE UN ARCHIVO DE TEXTO................................................................................................7
ESCRIBIR EN UN ARCHIVO DE TEXTO.............................................................................................................8
OPERACIONES CON ARCHIVOS DE TEXTO.....................................................................................................9
CERRAR ARCHIVOS DE TEXTO........................................................................................................................10
PUNTEROS.................................................................................................................................................................11
QUE ES UNA LISTA LIGADA..............................................................................................................................12
QUE ES UN PUNTERO..........................................................................................................................................13
COMO SE CREA UN PUNTERO...........................................................................................................................14
QUE ES UN NODO.................................................................................................................................................18
COMO AGREGAR UN NODO..............................................................................................................................20
COMO MODIFICAR UN NODO...........................................................................................................................22
QUE ES UNA LISTA CIRCULAR DOBLEMENTE LIGADA.............................................................................23
Listas Enlazadas frente a Arrays.........................................................................................................................25
CODIGOS ...................................................................................................................................................................27
CONCLUSION............................................................................................................................................................33
.......................................................................................................................................................................................33
INTRODUCCION
En esta pequeña antología veremos temas de suma importancia que nos ayudaran en
la vida de programador, usando la tecnología JAVA™ y usando sus aplicaciones,
comenzaremos a ver algunos de estos temas, son los archivos de texto y los
punteros, para que sirven los archivos de texto, estos nos ayudaran a guardar
información tales como escritos pero sin formato ya que no se le puede poner negrita,
cursiva, subrayado y color.
Mezclando una lista de enlace simple con un array uni-dimensional para acceder a los
nodos mediante los índices del array no se consigue nada. Gastará más memoria,
porque necesitará los elementos del array más los nodos, y tiempo, porque necesitará
mover los ítems del array siempre que inserte o borre un nodo. Sin embargo, si es
posible integrar el array con una lista enlazada para crear una estructura de datos útil
(por ejemplo, las tablas hash).
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.
Los archivos de texto plano (en inglés plain text) son aquellos que están compuestos
únicamente por texto sin formato, sólo caracteres. Estos caracteres se pueden codificar
de distintos modos dependiendo de la lengua usada. Algunos de los sistemas de
codificación más usados son: ASCII, ISO-8859-1 o latín-1, Unicode, etc.
Se les conoce también como archivos de texto llano, o texto simple, por carecer de
información destinada a generar formatos (negritas, subrayado, cursivas, tamaño, etc.)
y tipos de letra (por ejemplo, Arial, Times, Courier, etc.). El término texto plano proviene
de una traducción literal del término inglés plain text, término que en lengua castellana
significa texto simple o texto sencillo.
Los archivos nos permiten guardar nuestro trabajo para que no perdamos datos una
vez que cerremos la aplicación. Existen dos tipos de archivos en Java, en este trial
veremos los primeros. Los archivos de texto en Java se manejan mediante la clase
BufferedReader y la clase PrintWriter.
La clase file tiene un método llamado readline () que retorna toda una línea del archivo
de texto y deja posicionado el puntero de archivo en la siguiente línea. Cuando llega al
final del archivo readline retorna un string vacío.
def creartxt():
archi=open('datos.txt','w')
archi.close()
def grabartxt():
archi=open('datos.txt','a')
archi.write('Linea 1\n')
archi.write('Linea 2\n')
archi.write('Linea 3\n')
archi.close()
def leertxt():
archi=open('datos.txt','r')
linea=archi.readline()
while linea!="":
print linea
linea=archi.readline()
archi.close()
creartxt()
grabartxt()
leertxt()
archi=open('datos.txt','r')
Linea=archi.readline ()
El while se repite mientras el método readline () no retorne un string vacío. Dentro del
while procedemos a imprimir la línea que acabamos de leer y leemos la siguiente (el
método readline () retorna el contenido de toda la línea inclusive el salto de línea \n):
while linea!="":
print linea
linea=archi.readline()
Podemos leer todo el contenido de un archivo de texto y almacenarlo en una
lista (esto tiene sentido si el archivo de texto no es muy grande):
def creartxt():
archi=open('datos.txt','w')
archi.close()
def grabartxt():
archi=open('datos.txt','a')
archi.write('Linea 1\n')
archi.write('Linea 2\n')
archi.write('Linea 3\n')
archi.close()
def leertxtenlista():
archi=open('datos.txt','r')
lineas=archi.readlines()
print lineas
archi.close()
creartxt()
grabartxt()
leertxtenlista()
def leertxtenlista():
archi=open('datos.txt','r')
lineas=archi.readlines()
for li in lineas:
print li
archi.close()
Para construir un FileReader lo único que tenemos que hacer es utilizar el constructor
que recibe el nombre de archivo o un objeto de la clase File representando el archivo
que queremos leer. Una vez que ya tenemos el FileReader debemos utilizarlo para
construir un BufferedReader, de la manera que se ve a la izquierda.
Una vez que tengamos el BufferedReader podemos utilizar varios métodos que nos
permiten escribir a archivos de texto. El primero que vamos a ver es el método read (),
que nos devuelve un int. Con el código Unicode del carácter leído, para poder convertir
este código en un carácter debemos utilizar un cast a char. Para hacer un cast de un
tipo de dato a otro tenemos que poner la variable que queremos que reciba el valor, un
símbolo de igual, el tipo de dato al que queremos convertir y el valor que queremos
convertir, como se ve en la imagen de la izquierda. El otro método del BufferedReader
que nos va a ser muy útil es el método readline (), este método nos permite leer todo
un archivo mucho más rápido y nos es muy útil cuando queremos obtener datos de un
archivo de inicio ya que podemos leer una línea cada vez y utilizarla de la manera que
nos convenga.
Si vamos a escribir en un fichero de texto, sería una buena práctica el validar si dicho
fichero existe o no. También podríamos escribir sobre el fichero directamente. Ahora
que esto lo haríamos si no nos importase mucho el contenido que este tuviese.
Para validar si existe un fichero podemos leer el ejemplo Saber si existe un fichero con
Java. Dicho artículo nos explica de forma detallada lo simple que esto resulta.
En el caso de que no exista el fichero, nos pondremos manos a la obra para escribir
sobre el fichero.
Lo primero que tendremos que hacer será crear un BufferedWriter. Esta clase nos
ayuda a manejar los stream en forma de buffer con métodos muy sencillos. Este buffer
necesitará saber cual es el fichero. Esto se lo proporcionamos desde la clase
FileWriter.
Para escribir texto nos apoyamos en el método .write() del buffer. Muy sencillo. La
verdad es que no se me ocurría que texto grabar sobre el fichero, a si que, al final,
vamos a volcar 10 líneas iguales ayudándonos de un bucle for.
No nos podemos olvidar de dos últimas cosas. Siempre que manejemos el fichero para
escribir deberemos de cerrarle con el método .close().
Y lo otro, que toda la operativa de la clase java.io.* nos avisará de sus problemas de
acceso a fichero, elevándonos una excepción IOException. Que habrá que capturar en
alguna parte de nuestro código.
En Java, puede utilizar el objeto file para realizar operaciones básicas de E/S de
archivos, tales como crear, abrir, leer un archivo y escribir en el. Por ejemplo puede
utilizar los métodos de la clase File para realizar operaciones de E/S de archivos, tal
como utilizar los métodos createNewFile o delete de la clase File para eliminar o crear
un archivo. Puede utilizar las clases Buffered Reader y Buffered Writer para leer y
escribir el contenido de archivo.
Los programas que hemos desarrollado hasta el momento trabajan con datos
almacenados temporalmente en memoria durante la ejecución del programa. Una vez
finaliza la ejecución o se apaga el computador los datos se pierden. Para evitar esto, la
mayoría de Lenguajes de Programación permiten almacenar y recuperar información
en archivos, brindando las herramientas necesarias para manejo de los datos y el
control de errores(excepciones).
Excepciones
no existe. Para manejar este tipo de errores Python nos ofrece la sentencia try y except
cuya estructura general es:
def division(a,b): try: print float(a)/b except: print 'División por cero no esta
definida'
Al igual que al leer debemos recordar utilizar un try. Cuando utilizamos el PrintWriter
todo entra a un buffer y una vez que terminemos de escribir los datos debemos
recordar utilizar el método flush() del PrintWriter para escribir todo al archivo.
Esta operación nos permite añadir nuevos datos al final de un archivo, pero sin
modificar la ya existente
Esta operación nos permite acceder a los datos de un archivo(creado con anterioridad)
para extraerlos y realizar operaciones con ellos. Sin embargo, no permite adicionar o
modificar los datos del archivo. Python nos proporciona varios métodos para lectura de
datos desde un archivo: read(), readline(), readlines().
read(n): este método devuelve una cadena con los primeros n caracteres del archivo.
Si no recibe ningún argumento devuelve todo el contenido del archivo. Si el valor de n
es mayor que el número de caracteres del archivo, devuelve los caracteres del archivo.
PUNTEROS
Java se asemeja mucho a C y C++. Esta similitud, evidentemente intencionada, es la
mejor herramienta para los programadores, ya que facilita en gran manera su transición
a Java. Desafortunadamente, tantas similitudes hacen que no se repare en algunas
diferencias que son vitales.
C tiene tipos de datos básicos y punteros. C++ modifica un poco este panorama y le
añade los tipos referencia. Java también especifica sus tipos primitivos, elimina
cualquier tipo de punteros y tiene tipos referencia mucho más claros.
Todo este maremágnum de terminología provoca cierta consternación, así que los
párrafos que siguen intentan aclarar lo que realmente significan los términos que se
utilizan.
Se conocen ya ampliamente todos los tipos básicos de datos: datos base, integrados,
primitivos e internos; que son muy semejantes en C, C++ y Java; aunque Java
simplifica un poco su uso a los desarrolladores haciendo que el chequeo de tipos sea
bastante más rígido. Además, Java añade los tipos boolean y hace imprescindible el
uso de este tipo booleano en sentencias condicionales.
solución basada en punteros, pero es más por las deficiencias de los punteros que por
las ventajas de las referencias.
La Lista enlazada proporciona el método insertAt () que coge el índice en la lista, donde
el nuevo nodo ha de ser insertado, como primer argumento. El segundo argumento es
el objeto que será almacenado en la lista. Obsérvese que no es necesario colocar
moldeo alguno para hacer algo a una clase descendiente que depende de uno de sus
padres.
Una lista ligada circular es una lista en la cual el último nodo es ligado al primer
elemento de la lista. La ventaja de este tipo de estructura es que siempre se puede
llegar a cualquier nodo siguiendo las ligas. La desventaja e s que si no se tiene cuidado
una búsqueda puede resultar en un ciclo infinito. Esto se puede evitar al determinar a
un nodo como nodo-cabeza o nodo inicial.
Hasta ahora se han manejado listas que se recorren en una sóla dirección. En alguna
aplicaciones es práctico o hasta indispensable poder recorrer una lista en ambas
direcciones. Para estos casos se tienen las listas doblemente ligadas. Esta propiedad
implica que que cada nodo debe tener dos apuntadores, uno al nodo predecesor y otro
al nodo sucesor.
QUE ES UN PUNTERO
Un puntero es una variable que contiene una dirección de memoria. Normalmente, esa
dirección es la posición de otra variable en la memoria. Si la variable p de tipo float,
está en la dirección 1111 y la variable ptr en la dirección 1021, entonces, si el contenido
de ptr es la dirección de p, es decir 1111, decimos que ptr es un apuntador a p.
p
ptr 1021 1111
1111 45.23
El operador de dirección & delante del nombre de una variable nos devuelve la
dirección de la variable, ejemplo;
Todo esto se da porque ptr a punta a p o de manera equivalente, porque ptr contiene la
dirección de p.
a única forma de hacer que un puntero haga referencia a otra posición de memoria
(instancia) es asignarlo a un objeto creado con la sentencia new o usando el operador
= y asignar otra área de memoria a dicho objeto.
Ejemplo:
........
cadena1=cadena2;
En este caso el objeto cadena1 que tiene una referencia a una instancia de la clase
String que contiene la cadena "Hola Mundo" es asignado a una instancia de String que
contiene la cadena "Esta es una cadena con siete palabras", quedando liberada la
memoria ocupada por la primera instancia de String que estaba asignada al objeto
cadena1, después de la asignación los dos objetos cadena1 y cadena2 apuntan (hacen
referencia) a la misma instancia de la clase String que contiene la cadena "Esta es una
cadena con siete palabras".
Recientemente he tenido que leer archivos de java de texto, me resultó muy sencillo
con la siguiente sentencia:
El siguiente código hace lo siguiente, lee un número de un archivo, lo leo como String,
lo convierto a entero y lo guardo en la variable maxim.
int maxim;
File f = new File( “cont.txt” );
BufferedReader entrada = new BufferedReader( new FileReader( f ) );
if (f.exists()){
String texto = entrada.readLine();
maxim = Integer.parseInt(texto);
}
Con lo de crear quiero indicar escribir sobre un archivo de texto, o ya bien sea, aunque
tambien puede crear un archivo de texto y no escribirle nada, aunque no es muy logico,
jejeje. Para hacer esto se puede hacer de varias forma, yo prefiero utilizar un String
para mandar a leer y escribir a un archivo, ya que de esa manera puede utilizar el
tokenizer y hacer un escanner mas facilmente, aunque si se desea un escanner y
parser mas completo se debe de usar herramientas como JLex y Cup (Medio controlo
eso por si necesitan ayuda, ojala que me recuerde nada mas, XD).
Para escribir este es un método, llamado Abrirá, al cual le deben de pasar como
parámetro la dirección del archivo, este método solo carga el contenido de un archivo
de texto desde una ubicacion especifica a un string:
while((Llevo_Otro = Lev_Text.readLine())!=null){
if(Llevo_Texto == null){
Llevo_Texto = Llevo_Otro;
}
if(Llevo_Texto != null){
Llevo_Texto = Llevo_Texto + Llevo_Otro + “\n”;
}
}
Lev_Text.close();
Carga_Escritura.close();
}
catch(FileNotFoundException e){
System.out.println(”El Archivo No se encontro”);
}
catch(IOException e){
System.out.println(”ERROR: No se puede leer el archivo”);
}
return Llevo_Texto;
}
boolean Est;
try{
FileWriter Carga_Escritura = new FileWriter(Dir);
BufferedWriter Lev_Text = new BufferedWriter(Carga_Escritura);
if(Conte == null){
Conte = “”;
}
Lev_Text.write(Conte);
PROGRAMACION ORIENTADA A OBJETOS 16
PSP: IBER ALEJANDRO PUCHETA SOLIS
INFORMATICA 4202
ARCHIVOS DE TEXTO Y PUNTEROS
Lev_Text.close();
Carga_Escritura.close();
Est = true;
}
catch(FileNotFoundException e) {
System.out.println(”El Archivo No se encontro”);
Est = false;
}
catch(IOException e){
System.out.println(”ERROR: No se puede leer el archivo”);
Est = false;
}
return Est;
}
Se usa un boolean para validar si se logro guardar o no. Este metodo crea archivos y
les inserta texto, si se desea agregar mas contenido a un archivo bastara con, abrir
primero el archivo y guardar el contenido en algun lado y luego volver a crear el archivo
(Con el mismo nombre) y escribir lo que tenia antes y luego agregandole lo que
deseemos. Como siempre es mas facil ver esto en codigo, asi que les dejo mi clase de
manejar archivo.
QUE ES UN NODO
Inicio
Null
Esta clase representa un nodo en el arbol de busqueda de los tableros del juego de los
Perros y el Conejo
Field Summary
(package private) hijos
java.util.Vector El conjunto de los hijos de este nodo
(package private) ID
java.lang.String El identificador de este nodo
(package private) identidad
java.lang.String Indica si el nodo es para evaluar a los perros o al conejo
(package private) nivel
int El nivel al que pertenece este nodo
(package private) valor
int El valor de este nodo
Constructor Summary
Nodo()
Constructor vacio
Nodo(java.lang.String tablero, java.lang.String ide,
int nivel)
Obtenemos una instancia de Nodo a partir de su
identificador, si es perro o conejo y el nivel al que pertenece
Method Summary
void creaHijos()
Metodo para crear los hijos de este nodo
int evaluar(Cromosoma cromosoma)
Metodo que sirve para evaluar a este nodo
java.util.Vector getHijos()
Metodo para obtener los hijos de este Nodo
java.lang.String getId()
Metodo para obtener el id de este Nodo
java.lang.String getIdentidad()
Metodo para obtener la identidad de este Nodo
int getNivel()
Metodo para obtener el nivel de este Nodo
int getValor()
Metodo para obtener el valor de este Nodo
private ordenaCadena(java.lang.String cadena)
java.lang.String Metodo para ordenar una cadena de caracteres
int revisarAvanzadaConejo()
Metodo para revisar cuantas posibilidades tiene el conejo de
avanzar
int revisarJugadasGanadoras()
Metodo para revisar si el nodo es una buena posicion para
presionar y ganar
int revisarJugadasPerdedoras()
Metodo para revisar si el nodo es una jugada mala
int revisarMovimientosConejo()
Metodo para contar cuantos posibles movimientos tiene el
conejo
int revisarNivelConejo()
Metodo para revisar si el conejo no se encuentra en una
posicion peligrosa
int revisarProfundidadPerros()
Metodo para revisar si los perros se encuentran en su
profundidad
int revisarSiYaGane()
Metodo para revisar si el perro esta en una posicion ganadora
inminente
void setHijos(java.util.Vector hijos)
Metodo para asignar los hijos de este Nodo
void setId(java.lang.String id)
Metodo para asignar el id de este Nodo
void setIdentidad(java.lang.String identidad)
Metodo para asignar la identidad de este Nodo
void setNivel(int nivel)
Metodo para asignar el nivel de este Nodo
void setValor(int valor)
Metodo para asignar el valor de este Nodo
java.lang.String toString()
Metodo que sirve para obtener la representacion String de
este objeto
Nodo
public Nodo(java.lang.String tablero,
java.lang.String ide,
int nivel)
Parameters:
tablero - El identificador del nodo
ide - Si es para perros o conejo
PROGRAMACION ORIENTADA A OBJETOS 20
PSP: IBER ALEJANDRO PUCHETA SOLIS
INFORMATICA 4202
ARCHIVOS DE TEXTO Y PUNTEROS
evaluar
public int evaluar(Cromosoma cromosoma)
Metodo que sirve para evaluar a este nodo
Parameters:
cromosoma - El cromosoma que contiene los factores de la formula
revisarProfundidadPerros
public int revisarProfundidadPerros()
Metodo para revisar si los perros se encuentran en su profundidad
revisarSiYaGane
public int revisarSiYaGane()
Metodo para revisar si el perro esta en una posicion ganadora inminente
revisarMovimientosConejo
public int revisarMovimientosConejo()
Metodo para contar cuantos posibles movimientos tiene el conejo
revisarNivelConejo
public int revisarNivelConejo()
Metodo para revisar si el conejo no se encuentra en una posicion peligrosa
revisarAvanzadaConejo
public int revisarAvanzadaConejo()
Metodo para revisar cuantas posibilidades tiene el conejo de avanzar
revisarJugadasPerdedoras
public int revisarJugadasPerdedoras()
Metodo para revisar si el nodo es una jugada mala
revisarJugadasGanadoras
public int revisarJugadasGanadoras()
Metodo para revisar si el nodo es una buena posicion para presionar y ganar
creaHijos
PROGRAMACION ORIENTADA A OBJETOS 21
PSP: IBER ALEJANDRO PUCHETA SOLIS
INFORMATICA 4202
ARCHIVOS DE TEXTO Y PUNTEROS
ordenaCadena
private java.lang.String ordenaCadena(java.lang.String cadena)
Metodo para ordenar una cadena de caracteres
Parameters:
cadena - La cadena a ordenar
setIdentidad
public void setIdentidad(java.lang.String identidad)
Metodo para asignar la identidad de este Nodo
Parameters:
identidad - La nueva identidad
setHijos
public void setHijos(java.util.Vector hijos)
Metodo para asignar los hijos de este Nodo
Parameters:
hijos - Los nuevos hijos
setValor
public void setValor(int valor)
Metodo para asignar el valor de este Nodo
Parameters:
valor - El nuevo valor
setNivel
public void setNivel(int nivel)
Metodo para asignar el nivel de este Nodo
Parameters:
nivel - El nuevo nivel
getHijos
PROGRAMACION ORIENTADA A OBJETOS 22
PSP: IBER ALEJANDRO PUCHETA SOLIS
INFORMATICA 4202
ARCHIVOS DE TEXTO Y PUNTEROS
getValor
public int getValor()
Metodo para obtener el valor de este Nodo
getNivel
public int getNivel()
Metodo para obtener el nivel de este Nodo
Además de los arrays, otra de las estructuras de datos muy utilizada es la lista
enlazada. Esta estructura implica cuatro conceptos: clase auto-refenciada, nodo,
campo de enlace y enlace.
Los cuatro conceptos de arriba nos llevan a la siguiente definición: una lista enlazada
es una secuencia de nodos que se interconectan mediante sus campos de enlace. En
ciencia de la computación se utiliza una notación especial para ilustrar las listas
enlazadas. En la siguiente imagen aparece una variante de esta notación que utilizaré
a lo largo de esta sección:
Aunque se pueden crear muchos tipos de listas enlazadas, las tres variantes más
populares son la lista de enlace simple, la lista doblemente enlazada y la lista enlazada
circular. Exploremos esas variantes, empezando con la lista enlazada.
Una lista de enlace simple es una lista enlazada de nodos, donde cada nodo tiene un
único campo de enlace. Una variable de referencia contiene una referencia al primer
nodo, cada nodo (excepto el último) enlaza con el nodo siguiente, y el enlace del último
nodo contiene null para indicar el final de la lista. Aunque normalmente a la variable de
referencia se la suele llamar top, usted puede elegir el nombre que quiera. La siguiente
figura presenta una lista de enlace simple de tres nodos, donde top referencia al nodo
A, A conecta con B y B conecta con C y C es el nodo final:
Este pseudocódigo declara una clase auto-referenciada llamada Node con un campo
no de enlace llamado name y un campo de enlace llamado next. También declara una
variable de referencia top (del tipo Node) que contiene una referencia al primer Node
de una lista de enlace simple. Como la lista todavía no existe, el valor inicial de top es
NULL. Cada uno de los siguientes cuatro casos asume las declaraciones de Node y
top:
Las listas enlazadas tienen las siguiente ventajas sobre los arrays:
En contraste, los arrays ofrecen las siguiente ventajas sobre las listas enlazadas:
• Los elementos de los arrays ocupan menos memoria que los nodos porque no
requieren campos de enlace.
• Los arrays ofrecen un aceso más rápido a los datos, medante índices basados
en enteros.
Las listas enlazadas son más apropiadas cuando se trabaja con datos dinámicos. En
otras palabras, inserciones y borrados con frecuencia. Por el contrario, los arrays son
más apropiados cuando los datos son estáticos (las inserciones y borrados son raras).
De todas formas, no olvide que si se queda sin espacio cuando añade ítems a un array,
debe crear un array más grande, copiar los datos del array original el nuevo array
mayor y elimiar el original. Esto cuesta tiempo, lo que afecta especialmente al
rendimiento si se hace repetidamente.
Mezclando una lista de enlace simple con un array uni-dimensional para acceder a los
nodos mediante los índices del array no se consigue nada. Gastará más memoria,
porque necesitará los elementos del array más los nodos, y tiempo, porque necesitará
mover los ítems del array siempre que inserte o borre un nodo. Sin embargo, si es
posible integrar el array con una lista enlazada para crear una estructura de datos útil
(por ejemplo, las tablas hash).
Otra estructura de datos que forma parte del framework, aunque no deriva de
Collection<E>, dado que no se trata de una colección per se sino de un mapeo, es la
que define la interfaz Map<K,V>, el conocido diccionario o matriz asociativa, en el que
cada valor tiene asociado una clave que usaremos para recuperar el elemento, en lugar
de un índice como el caso de las listas. Por ejemplo podríamos tener un mapeo en el
que las claves fueran los días de la semana y los valores, el número de líneas de
código que escribimos.
CODIGOS
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
/**
* @param args
*/
public static void main(String[] args) {
File f = new File( "E:\\investiogacion iber.txt" );
BufferedReader entrada;
try {
entrada = new BufferedReader( new FileReader( f ) );
String linea;
while(entrada.ready()){
linea = entrada.readLine();
System.out.println(linea);
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
Este programa lo que hace es abrir un archivo de texto desde una unidad por ejemplo
la unidad C:// seguido con el nombre del archivo y lee el archivo de texto
import java.io.*;
class FileStreamsTest {
public static void main(String[] args) {
try {
File inputFile = new File("original.txt");
File outputFile = new File("outagain.txt");
//Creamos entradas y salidas por cónsola
FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(outputFile);
int c;
while ((c = fis.read()) != -1) {
//lee byte a byte de fis y lo vuelca en fos
fos.write(c);
}
fis.close();
fos.close();//importante , no dejarse abierto canales
} catch (FileNotFoundException e) {
//la excepción provendria de no encontrar original.txt
// originada en la linea FileInputStream fis = new FileInputStream(inputFile);
// java exige recoger la excepcion al usar este canal ( try{..} catch{..} )
// el fichero de salida no genera excepción , ya que se va a crear o sobreescribir
System.err.println("FileStreamsTest: " + e);
} catch (IOException e) {
// excepción más genérica de entrada / salida
System.err.println("FileStreamsTest: " + e);
}
}
}
Este programa realiza un apertura y escritura de un archivo de texto asi como poderlo
editar a nuestro gusto usando principales variables como el filewritter entre otros
NODOS
// SLLDelDemo.java
class SLLDelDemo {
static class Node {
String name;
Node next;
}
top = top.next;
// Put back B
temp = top;
temp.next = temp.next.next;
Lo que realiza este programa es hacer una referencia a un nodo y crear punteros
después ordenar las letras A,B,C,D entre otras mas un msj en pantalla
Listas ligadas
import java.awt.*;
import java.net.*;
import java.io.*;
import java.awt.event.*;
import java.util.*;
super (title);
Font f = new Font( "Tahoma", 0 , 13 );
titulo = new Label("TABLA HASH");
titulo.setBounds(180,20,400,50);
Font ff = new Font( "Tahoma", 1 ,18 );
titulo.setFont( ff );
add(titulo);
setFont( f );
setResizable(false); //no maximizar
setBounds(150,100,500,450);
setLayout(null);
textimpri.setEditable(false); //no se
puede escribir
textver.setEditable(false); //no
se puede escribir
textinser.setEditable(true);
textbus.setEditable(true);
buscar.setBounds(330,130,100,20);
mostrar.setEnabled(false); //desabiliter
buscar.setEnabled(false);
cierra.setEnabled(true);
add(lab1);
add(lab2);
add(textver);
add(textimpri);
add(textinser);
add(textbus);
add(insertar);
add(buscar);
add(mostrar);
add(cierra);
mostrar.addActionListener(new accion());
buscar.addActionListener(new accion());
insertar.addActionListener(new accion());
cierra.addActionListener(new accion());
addWindowListener(new Cerrar());
setVisible(true);
}
Este programa te permite ingresar caracteres mediante una lista ligada y mandarla
imprimir en pantallag,guardarla en una cadena y la busca,
CONCLUSION
ARCHIVOS DE TEXTO
http://www.wikipedia.com/searchresults=?archivos_texto.html
http://www.magusoft.com/trials/open_file=?archivos_texto
LISTAS
http://www.scribd.com/doc/11410360/JavaListas
LISTAS LIGADAS
http://www.scribd.com/doc/12882782/ListasLigadas
NODOS
http://www.scribd.com/doc/135534535/Nodos_java
PUNTEROS
http://www.scribd.com/doc/114335434/Apuntadoresenjava