Archive for Java

Uso de Hilos o Threads en Java

Los Hilos o los “Threads” en Java, son basicamente una forma de poder ejecutar varios procesos simultáneamente en nuestros programas en Java.

Usualmente para poder utilizarlos tenemos que crear clases que extienden a la clase Thread, y reescribir el metodo principal “run()”, el cual es el que se va a ejecutar principalmente al iniciar un hilo, thread o nuevo proceso en java.

Para comprender mejor el funcionamiento te proporciono el siguiente codigo fuente y un video donde explico como usar hilos de manera sencilla.

Video Threads:


Codigo fuente:

Metodo “main” para ejecutar los Threads de la clase proceso.

public static void main(String[] args) {
		// TODO Auto-generated method stub

		Proceso hilo1 = new Proceso("Hilo 1");
		Proceso hilo2 = new Proceso("Hilo 2");
		hilo1.setMensaje("Este es el mensaje del hilo 1");
		hilo2.setMensaje("Mensaje hilo 2");
		
		hilo1.start();
		hilo2.start();
	
	}


 

Clase Proceso

public class Proceso extends Thread{
	
	String mensaje;
	public Proceso(String msg)
	{
		super(msg);
	}
	
	public void run()
	{
		for(int i =0;i<15;i++)
		{
			System.out.println(mensaje);
		}
		System.out.println("Este proceso ha terminado:"+this.getName());
	}
	
	public void setMensaje(String msj)
	{
		this.mensaje = msj;
	}

}

Espero que este tutorial te haya sido de utilidad, no olvides comentar.

 

Manejo de archivos en java: escribir en un archivo de texto (.txt)

En esta ocasión aprenderemos como utilizar java para escribir en un archivo de texto con extensión .txt.

Realmente no es necesario utilizar esta extensión, se pueden utilizar otras extensiones.

Para proceder comenzaremos primero con un video que he realizado yo mismo, o pueden continuar y ver el codigo ejemplo donde lo explicaré mas detalladamente:

Video tutorial de escritura de archivos en java.

Codigo ejemplo:

En el siguiente codigo tenemos lo siguiente:
Un método en Java cuya función es escribir un nuevo archivo 1 simple linea de texto. EL método consta de un parametro que es el nombre del archivo, por ejemplo “archivo.txt”. Debe estar incluida la extensión en el nombre, pues no se asigna por defecto.

Veamos el código:

 

import java.io.*;//no olviden importar esta librería al inicio de su programa
//esto es solo un método, no una clase, el método deberá ser incluido en una clase java para su uso
public void escribir(String nombreArchivo)
	{
		File f;
		f = new File("nombreArchivo");

		//Escritura
		try{
		FileWriter w = new FileWriter(f);
		BufferedWriter bw = new BufferedWriter(w);
		PrintWriter wr = new PrintWriter(bw);	
		wr.write("Esta es una linea de codigo");//escribimos en el archivo 
		wr.append(" - y aqui continua"); //concatenamos en el archivo sin borrar lo existente
                //ahora cerramos los flujos de canales de datos, al cerrarlos el archivo quedará guardado con información escrita
                //de no hacerlo no se escribirá nada en el archivo
		wr.close();
		bw.close();
		}catch(IOException e){};
         }

Como se puede apreciar, es necesario incluir el código dentro de un “try” y un “catch” para evitar errores.

Será necesario el uso de 4 clases especiales para poder escribir, la clase File, FileWriter, BufferedWriter y PrintWriter, cada una hace lo siguiente:

  1. File: esta clase es la escencia de crear un nuevo archivo, si un archivo con el mismo nombre ya existe podríamos sin querer escribir contenido sobre el mismo.
  2. FileWriter: es un objeto que tiene como función escribir datos en un archivo.
  3. BufferedWriter: objeto que reserva un espacio en memoria donde se guarda la información antes de ser escrita en un archivo.
  4. PrintWriter: Es el objeto que utilizamos para escribir directamente sobre el archivo de texto.

Espero que este corto tutorial te haya sido de utilidad, recuerda dejar tus comentarios.

 

Manipulacion de archivos:lectura de un archivo de texto en java

Leer un archivo de texto en java no es muy complicado, en resumen es un proceso muy similar a leer texto escrito del teclado, y para hacerlo necesitaremos hacer uso de las siguientes clases, la clase File, FileReader y BufferedReader.

Por favor ve el siguiente vídeo para ver como se lee archivos de texto en java y ver el programa de lectura en ejecución, espero en que te ayude a entender mejor como se leen archivos de texto en java, o si no sigue leyendo este articulo para copiar el codigo fuente directamente y ver el modo de uso.

Video:

A continuación he colocado el método “leer” el cual tiene un parametro llamado “nombre” el cual es el nombre del archivo, en el coloca preferentemente la ruta completa del archivo de texto del cual deseas leer su contenido.
El codigo de lectura es el siguiente:

Descarga:

Clase Archivo.java

Codigo fuente

 

import java.io.*;

public String leer(String nombre)

//El parametro nombre indica el nombre del archivo por ejemplo "prueba.txt" 

{

try{

File f;
FileReader lectorArchivo;

//Creamos el objeto del archivo que vamos a leer
f = new File(nombre);

//Creamos el objeto FileReader que abrira el flujo(Stream) de datos para realizar la lectura
lectorArchivo = new FileReader(f);

//Creamos un lector en buffer para recopilar datos a travez del flujo "lectorArchivo" que hemos creado
BufferedReader br = new BufferedReader(lectorArchivo);

String l="";
//Esta variable "l" la utilizamos para guardar mas adelante toda la lectura del archivo

String aux="";/*variable auxiliar*/

while(true)
//este ciclo while se usa para repetir el proceso de lectura, ya que se lee solo 1 linea de texto a la vez
{
aux=br.readLine();
//leemos una linea de texto y la guardamos en la variable auxiliar
if(aux!=null)
l=l+aux+"n";
/*si la variable aux tiene datos se va acumulando en la variable l,
* en caso de ser nula quiere decir que ya nos hemos leido todo
* el archivo de texto*/

else
break;
}

br.close();

lectorArchivo.close();

return l;

}catch(IOException e){
System.out.println("Error:"+e.getMessage());
}
return null;
}

 

Modo de uso:

 

/*simplemente manda a llamar el metodo colocando en su argmento el nombre del archivo*/
leer("C:Usersnombredemipcprueba.txt");

 

Como resultado leeras el archivo de texto..

¿Problemas con la ruta o Path? Como seleccionar gráficamente un archivo para leerlo

Simplemente con una pequeña modificación a nuestro codigo utilizando la libreria javax.swing con el objeto JFileChooser

 

Creamos un objeto JFileChooser el cual sirve para elegir graficamente un archivo, lo elegimos y con el codigo acontinuación generaremos una variable tipo String(texto) que contendra ela ruta o el Path completo hacia nuestro archivo, luego solo ejecutamos el metodo “leer”.

 

javax.swing.JFileChooser j= new javax.swing.JFileChooser();

j.showOpenDialog(j);

String path= j.getSelectedFile().getAbsolutePath();

leer(path);

 

Codigo para leer un archivo de texto gráficamente:

Como nota este método es simple y esta diseñado para leer archivos de texto, leer otro tipo de archivos ocasionara que el programa se cierre.

El codigo es el siguiente:

 

public  String leerGrafico()

{

File f;

javax.swing.JFileChooser j= new javax.swing.JFileChooser();

j.showOpenDialog(j);

try{

String path= j.getSelectedFile().getAbsolutePath();

String lectura="";

f = new File(path);

try{

FileReader fr = new FileReader(f);

BufferedReader br = new BufferedReader(fr);

String aux;

while((aux = br.readLine())!=null)

lectura = lectura+aux+"n";

}catch(IOException e){}

return lectura;

}catch(NullPointerException e){

javax.swing.JOptionPane.showMessageDialog(j, "Has seleccionado cerrar programa, saliendo...");

System.exit(0);

}return null;

}

 

 

Espero que esto haya servido de algo, para comprender mejor como funciona el programa y verlo en funcionamiento colocare un video en esta página lo mas pronto posible. No olviden comentar.

 

 

Algoritmo de ordenamiento:Quicksort

Bueno pues este algoritmo al principio resulta un poco complicado de entender pero en realidad no es tan complicado.
Para comprenderlo mas facilmente mira el siguiente video:

Para comprender bien como funciona el quicksort hay tener claros estos conceptos:

Pivote: Es un numero del arreglo que tomaremos como referencia para reorganizar el arreglo de numeros y ordenarlo. En pocas palabras tomamos todos los numeros mayores que el que hayamos elegido como pivote y los colocamos a la derecha del mismo, y todos los que sean menores que este los colocamos del lado izquierdo.

Punteros izquierdo y derecho: El quicksort utiliza 2 punteros como referencia, uno izquierdo y uno derecho, normalmente cuando se ordena de menor a mayor el izquierdo simboliza el lado de números menores y el derecho los números mayores. A medida que analizamos el arreglo, los punteros se acercan el uno a otro y cuando se encuentran en una ubicación se coloca en esta el pivote y se separa el arreglo en 2 arreglos mas pequeños. Posteriormente se vuelve a aplicar el algoritmo a los arreglos mas pequeños hasta que se logre ordenar la secuencia tal y como se ha visto en el vídeo anterior.

Descarga:

Ordenador.java

Instrucciones:
La clase Ordenador posee un método que se llama quicksort, lo que hace es organizar un arregla unidimensional de menor a mayor utilizando
el algoritmo de quicksort. Para ponerlo a prueba puedes utilizar este codigo en tu metodo Main, mandando a llamar el metodo quicksort de la clase y organizando un arreglo cualquiera.

 

int array[] ={3,7,3,4,12,6,3,7,4};

Ordenador a = new Ordenador();

a.quicksort(array);

El programa esta diseñado para manejar datos de tipo int, por lo que solo acepta arreglos de numeros tipo entero.

Espero que te sirva, no olvides dejar tus comentarios.