Artículos
Java

Generar un fichero GZIP con Java

Creado: 31/Dic/2006 Actualizado: 09/May/2024

GZIP es la abreviatura de GNU ZIP. GZIP se basa en el algoritmo Deflate (combinación de los algoritmos LZ77 y Huffman). GZIP solo sirve para comprimir ficheros, pero no los comprime. Esto si que lo hace otras herramientas como ZIP. La idea es utilizar el lenguaje Java para generar un fichero GZIP a partir de un fichero de nuestros discos.

GZIP y ZIP son dos conceptos diferentes. GZIP comprime ficheros, mientras que ZIP comprime y archiva los ficheros.

Lo primero que tenemos que hacer es leer el fichero de origen. Para ello nos apoyaremos en las clases de Java IO. En concreto, FileInputStream.

String inFilename = "fichero.txt";
FileInputStream in = new FileInputStream(inFilename);

A continuación deberemos detallar cuál va a ser el fichero de salida. En este caso nos apoyamos en las clases de Java ZIP de compresión. Usaremos GZIPOutputStream, a la cual le pasaremos por parámetro el fichero de salida, representado por la clase FileOutputStream, esta última de Java IO.

String outFilename = "fichero.gzip";
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(outFilename));

Esto ya hace que lo que volquemos a GZIPOutputStream sea una codificación GZIP. A si que solo nos quedará ir leyendo del stream de entrada y volcarlo al stream de salida. Para ello nos apoyaremos en un buffer de 1024bytes.

byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
    out.write(buf, 0, len);
}

Ya tenemos todo el contenido volcado sobre la salida comprimida. Solo nos quedará cerrar los ficheros, para eso usamos el método .close().

out.finish();
out.close();

Hay que recordar que siempre que manejamos ficheros con las clases de Java IO se puede producir una excepcion IOException. Así que todo nuestro código deberá ir encerrado entre un bloque try-catch{}.

Código Fuente

Descárgate el código fuente de Generar un fichero GZIP con Java
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Artículos
Java

¿Es ese carácter un número?

Creado: 30/Dic/2006 Actualizado: 05/Jun/2015

Ayer publicábamos el artículo «Validar si un dato es numérico en Java» que explica como controlar si una cadena es o no un número. Pero para ciertos casos podemos anticiparnos hasta el origen de dato. Por ejemplo si estamos obteniéndole por pantalla. En este caso podemos controlar cada uno de los caracteres tecleados.

La idea es que por cada carácter tecleado podemos utilizar el método isDigit(char) el cual nos dirá si el carácter que se pasa por parámetro es un dígito o no, es decir, si va del 0 al 9.

Character.isDigit(char)

El método isDigit(char) es un método estático de la clase Character. Es por ello que solo hará falta que lo invoquemos directamente. Quedandonos la siguiente línea de código con un ejemplo:

Character.isDigit('3');

El valor de retorno es un booleano. Es por ello que podemos utilizarlo en condiciones. Por ejemplo en un if:

if (Character.isDigit('3'))
    System.out.println("El caracter es un dígito");
else
    System.out.println("El caracter NO es un dígito");

Podéis jugar a modificar el caracter que se pasa por parámetro para ver como varia el comportamiento del programa.

Código Fuente

Descárgate el código fuente de ¿Es ese carácter un número?
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Artículos
Java

Validar si un dato es numérico en Java

Creado: 29/Dic/2006 Actualizado: 07/Sep/2023

Navegando por los diferentes foros de la red me encuentro con la siguiente pregunta. ¿Cómo puedo validar si un dato es numérico en Java? A uno le puede parecer una pregunta muy básica y típica de alguien que ni siquiera se ha leído la documentación, pero la cuestión es que es una duda que existe.

De hecho, la gente busca el método isNumeric(String). Que, a día de hoy, no existe dentro de las APIs de Java, si bien, si que existe en algunas otras librerías de renombre, como puede ser en Apache Commons, en concreto org.apache.commons.lang.StringUtils.isNumeric().

Y es que en muchos casos nos vamos a encontrar con orígenes de datos, donde de una forma explicita no vengan definidos como números. Esta claro que una base de datos que alberga enteros lleva la validación implícita, que un WebService (o un simple método Java) identificará los campos como numéricos,… Pero que sucede si estamos leyendo un fichero. Este de forma implícita no lleva ninguna validación. Es en este tipo de casos donde será bueno el realizar este tipo de validaciones. (Cierto es que podríamos realizar una lectura directa sobre enteros).

Para poder resolver esta duda la idea es la siguiente. Partimos de las dos siguientes variables:

String cadenaUno = "1234";
String cadenaDos = "No soy un numero";

Ahora tenemos que codificar el método isNumeric(String), el cual podemos utilizar a posteriori para validar las cadenas. Esto lo haremos de la siguiente forma:

if (Comunes.isNumeric(cadenaUno))
	System.out.println(cadenaUno + " es un numero");
else
	System.out.println(cadenaUno + " NO es un numero");

if (Comunes.isNumeric(cadenaDos))
	System.out.println(cadenaDos + " es un numero");
else
	System.out.println(cadenaDos + " NO es un numero");

El método isNumeric(string) se apoyará en la clase Integer. La idea consiste en transformar la cadena en un número. En el caso de que resulte bien, es que la cadena es un número (obvio), si falla, es que nuestra cadena no será un número.

isNumeric() será un método estático de la clase Comunes. Es por ello que su utilización es la de Comunes.isNumeric(String).

El método de Integer que nos permite transformarlo en numérico es .parseInt(String). Si va bien devuelve el entero, sino genera la excepción NumberFormatException. De esta forma nuestro método quedará de la siguiente forma:

private static boolean isNumeric(String cadena){
	try {
		Integer.parseInt(cadena);
		return true;
	} catch (NumberFormatException nfe){
		return false;
	}
}

Este método es válido para ciertos propósitos, pero no tenemos que olvidar que existen números más grandes que deberían de ser tratados con clases como Long o Double. Es decir, que nuestro método isNumeric(String) podría ser un poco más complejo.

Desde aquí animo a que alguien genere la posible implementación, y lo publicaremos en Línea de Código.

Código Fuente

Descárgate el código fuente de Validar si un dato es numérico en Java
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star
Validar si un dato es numérico en Java

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
SVG

Hola mundo en SVG

Creado: Actualizado: 16/Dic/2025

Resulta un poco extraño explicar un ejemplo de como hacer un «Hola Mundo» en un lenguaje destinado a los gráficos vectoriales. Pero es posible. Y es que nadie ha dicho que no haya texto dentro de los gráficos. Por ejemplo, imaginemos un mapa terrestre (ahora que está de moda el tema de Google Earth) con las localizaciones de las ciudades, pueblos y accidentes geográficos.

A lo que vamos. Lo primero que tenemos que hacer es definir nuestro archivo SVG. En este sentido, recordar que es un fichero XML y que la primera etiqueta que nos encontraremos será SVG. Donde definimos el namespace del lenguaje.

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg">
  ... 
</svg>

Una vez definido el documento lo que nos queda es poner el texto. Para ello nos apoyaremos en la etiqueta <text>. De esta etiqueta lo primero que tenemos que saber es que con los atributos X e Y posicionamos el texto:

<text x="100" y="50"></text>

Y lo segundo, que entre la etiqueta de apertura y cierre tiene que ir el texto:

<text x="100" y="50">Hola Mundo</text>

Ahora, y ya para nota, si lo queremos poner bonito podemos utilizar los atributos font-family, font-size y fill donde podemos elegir el tipo de letra, su tamaño y color respectivamente.

<text font-family="Verdana" font-size="30" fill="blue"></text>

Y, así de sencillo, tenemos nuestro Hola Mundo en SVG.

Blog

Linea de Codigo en X Premios AUI

Creado: 28/Dic/2006 Actualizado: 16/Dic/2025

Ya lo comentabamos, hace unos dias, cuando presentamos X Edición Premios AUI, nuestra intención de presentarnos al premio. Es por ello que hemos incluido el logo de votación en la parte superior derecha de Linea de Codigo. Para que pincheis sobre el y voteis por nosotros.

Motivación:
Siempre me resultaron unos premios curiosos. La verdad es que esta muy bien que la AUI promueva acciones de esta indole. Sobre todo para valorar las webs en español que circulan por la red de redes.

Por otro lado supongo que valdra para calibrar la aceptacion del blog y de los usuarios que lo visitan. Claro esta si la AUI proporciona los datos de las votaciones. A dia de hoy secretos.

Expectativas:
Creo que con participar va a ser bastante (que espiritu mas deportivo).

Lo dicho, ahora solo te queda:

Votar por Linea de Codigo
Votar por Linea de Codigo
Votar por Linea de Codigo
Votar por Linea de Codigoo
Votar por Linea de Codigo

Muchas gracias.

Artículos
Java

Recibir parametros en una JSP

Creado: 27/Dic/2006 Actualizado: 11/Jun/2015

Una página JSP nos permite combinar la tecnología de las páginas web con la tecnología de las páginas de servidor.

Es por ello que en una página JSP siempre veremos dos partes bien diferenciadas. El código relativo a la tecnología cliente: HTML, XHTML, SVG,… y lo que denominaremos scriptlet. Estos scriptlet no deja de ser código Java que se ejecutará en el lado del servidor para añadirse al código cliente ya existente.

Es decir, el navegador que ejecute nuestra JSP solo verá una página web (sea la tecnología que sea). Dicha página web se habrá compuesto en el servidor mediante código Java y código cliente.

Una de las primera cosas que querremos hacer será pasarle información a esta página. Lo primero que conocer son las formas de pasar información a una página web (vía POST y vía GET). Las diferencias, a grandes rasgos, son que las peticiones vía GET encadenan los valores a pasar a la página web en la URL, mientras que si hacemos una petición vía POST se pasará la información de forma implícita.

En el primer caso veremos URL del tipo…

ObtenerParametros.jsp?dato1=pagina&dato2=lineadecodigo

Lógicamente nuestro cometido será el recuperar la información que llega como parámetro para utilizarla dentro de nuestra página web.

Dentro del contexto de la página JSP tenemos disponible la variable request. Dicha variable viene a representar la petición que es recibida en la página. Y consecuentemente los parámetros y valores que la llegan.

Si queremos recuperar el valor de los parámetros, simplemente deberemos de utilizar el método .getParameter(String parametro). Donde indicaremos el nombre del parámetro a recuperar.

Así, en la anterior petición podremos recuperar los valores de los parámetros dato1 y dato2 mediante la siguiente linea de codigo:

String datoUno = request.getParameter("dato1");
String datoDos = request.getParameter("dato2");

Ahora solo nos quedará el utilizar los valores de los datos recibidos como parámetro donde y como queramos. Por ejemplo para, simplemente, mostrarlos por pantalla.

out.println(datoUno);
out.println(datoDos);

En este caso hemos utilizado la variable out, que viene a representar la respuesta hacia el cliente y en concreto el método .println(variable) que vuelca información sobre la página.

Código Fuente

Descárgate el código fuente de Recibir parametros en una JSP
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Artículos
Java

Leer fichero de texto con Java

Creado: 26/Dic/2006 Actualizado: 05/Jun/2015

Cuando tratamos con estructuras de tipo stream para realizar lecturas y escrituras, los pasos habituales son el ir apoyándonos en clases que nos faciliten el manejo del dispositivo de destino, desde la de más alto nivel a la de menor nivel. Lo que técnicamente denominaríamos wrapping.

Para manejar cadenas de texto (Java String), la estructura que nos ayuda, en Java IO, a ello es el BufferedReader. Pero a este nivel, todavía no hemos identificado el dispositivo de destino.

En la lectura de ficheros de texto, lo primero que tenemos que hacer es crear un Reader de tipo fichero. Esto es encapsulado en la clase FileReader. Será esta clase la que utilice el buffer como origen de lectura.

Quedándonos estas simples líneas:

FileReader fr = new FileReader("datos.txt");
BufferedReader bf = new BufferedReader(fr);

O en un formato mas «técnico» podríamos irnos a tener una sola linea de codigo:

BufferedReader bf = new BufferedReader(new FileReader("datos.txt"));

Ahora solo nos queda es ir leyendo del fichero. Para ello utilizaremos los métodos de BufferedReader. Y en concreto el que nos va dando línea a línea readLine(), La lectura se hará de forma repetitiva hasta que la lectura de la línea sea nula.

while ((sCadena = bf.readLine())!=null) {
   System.out.println(sCadena);
}

Hay que tener especial cuidado con el manejo de las excepciones. Todo manejo con la librería java.io nos hará estar expuestos al manejo de la excepción IOException.

Y tampoco podemos olvidar que a la hora de realizar la lectura de un fichero, este, no exista. En ese caso se lanzará una excepción FileNotFoundException.

Código Fuente

Descárgate el código fuente de Leer fichero de texto con Java
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Artículos
Blog

www.lineadecodigo.com

Creado: 25/Dic/2006 Actualizado: 12/Oct/2023

Papa Noel nos ha regalado el dominio www.lineadecodigo.com. Es por ello que a partir de este momento podéis seguir leyendo las entradas de este blog en www.lineadecodigo.com. A si que no olvidéis actualizar los enlaces a la página y vuestros readers.

URL: http://www.lineadecodigo.com
Feeds: http://www.lineadecodigo.com/feed/

Espero que este cambio haga que Linea de Codigo sea más interesante. En unos días os iremos comentando las novedades que incorpora la página.

SVG

Dibujando multiples lineas en SVG

Creado: 23/Dic/2006 Actualizado: 16/Dic/2025

Mediante este ejemplo intentamos explicar el uso de las polilineas en SVG. Una polilinea no deja de ser la línea que se traza entre una consecución de puntos. La principal diferencia con el polígono es que, en el caso del polígono, indicamos los vértices y automáticamente se traza una línea desde el último punto al primero.

Para explicar este ejemplo había pensado en un reto artístico muy simple. Este reto consiste en dibujar una especie de casa con una cruz en su parte inferior (en el cuadrado) sin pasar dos veces por la misma línea. Consiguiendo al final un dibujo como el que se presenta:

Básicamente, su solución se basa en un conjunto de puntos, siempre y cuando no tengamos el mismo par de puntos consecutivos.

Puestos en SVG lo primero que tenemos que hacer es definir nuestro documento SVG. Para ello nos bastará con definir la etiqueta SVG de la siguiente forma:

<?xml version="1.0"?>
<svg xmlns=”http://www.w3.org/2000/svg”>
</svg>

Como vemos el documento empieza con una declaración de documento XML y es que los documentos SVG no dejan de ser documentos XML.

Para poder realizar el trazado de nuestro dibujo utilizaremos la etiqueta polyline. En esta etiqueta lo único que hay que identificar es, mediante el atributo points, la lista de puntos por donde queremos que se trace la línea. Quedándonos el siguiente código:

<polyline points="200,200 200,100 250,50
300,100 300,200 200,100 300,100 200,200 300,200″ />

Para el color y grosor de las líneas nos ayudamos de los atributos stroke (para el color) y stroke width (para el grosor). Esto se repite para todo el resto de figuras básicas: line, circle,…Quedandonos la siguiente linea de codigo:

<polyline fill="white" stroke="blue" stroke-width="1"
  points="200,200 200,100 250,50 300,100 300,200
          200,100 300,100 200,200 300,200" />
Artículos
HTML

Abrir enlace en una nueva ventana

Creado: 22/Dic/2006 Actualizado: 26/May/2023

Lo primero que tenemos que saber si pensamos en abrir enlace en una nueva ventana es que es una opción configurable por los navegadores en su comportamiento por defecto y que lo más normal es que los enlaces de una página HTML se habrán en la misma página que los contiene. Pero puede darse el caso que esto no sea lo que más nos interese y queramos cambiar su comportamiento.

Si lo que queremos es abrir el enlace en una nueva ventana simplemente tenemos que trabajar con los atributos del elemento a o anchor de HTML. En concreto con los valores que le asignemos al atributo target.

Es decir, nuestro código para crear un enlace quedará de la siguiente manera, utilizando la siguiente estructura:

<a href="enlace" target="valor">Contenido Enlazable</a>

Tenemos que conocer que los valores que se le pueden dar al atributo target son varios. Entre ellos podemos encontrar los siguientes:

  • _blank, el enlace se abre en una nueva página.
  • _parent, el enlace se abre sobre la página padre.
  • _self, el enlace se abre en la misma página.
  • _top, el enlace se abre sobre la ventana superior. En este caso es si estamos en un frame o iframe. Se abriría sobre la página que lo contiene.

Por lo que si queremos abrir enlace en una nueva ventana deberemos de asignarle el valor de _blank a dicho a tributo, para que cuando pinchemos sobre el enlace, el enlace se abra en una nueva ventana.

Es por ello que nuestro código para crear el enlace quedará la siguiente línea de código:

<a target="_blank" href="<http://www.lineadecodigo.com>">Abrir Linea de Codigo en una nueva ventana</a>

De esta forma tan sencilla podemos conseguir el cometido que estábamos buscando dentro del diseño de nuestra página web. ¿Se te ocurre qué tendríamos que hacer para que el enlace se abriese en una pestaña del navegador? ¿Podríamos utilizar alguno de los valores del atributo target? Comparte tus ideas con nosotros en los comentarios.

Código Fuente

Descárgate el código fuente de Abrir enlace en una nueva ventana
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star
Abrir enlace en una nueva ventana

Vídeos sobre HTML

Disfruta también de nuestros artículos sobre HTML en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test HTML

¿Te atreves a probar tus habilidades y conocimiento en HTML con nuestro test?

Test HTML