Crear un fichero temporal puede parecer tan tonto como simplemente crear un fichero con un nombre y luego usarlo. Y sí que básicamente sería eso, pero ¿qué pasa si volvemos a arrancar el programa que hemos generado? Pues que se encontraría el fichero ya creado y a lo mejor añade algo al final o lo lee entero y falla.

También podemos optar por borrarlo al terminar de usarlo y ya estaría porque si volvemos a arrancarlo, no estaría el fichero.

Pero aun así habría posibilidad de error dado que ¿y si el programa que estamos utilizando es multihilo y accedemos en diferentes hilos a ese fichero? También pasaría lo mismo si lanzásemos varios forks del mismo proceso.

Por ello es recomendable utilizar siempre algún sistema que permita garantizar relativamente el nombre de un fichero. Por ejemplo, en Linux nos podemos encontrar el comando mktemp que crea un fichero temporal en /tmp.

¿Pero y si estamos desarrollando en Java y queremos que sea independiente de la plataforma? Pues aquí os dejo un ejemplo sencillo de cómo sería la creación de un fichero temporal:

import java.io.File;
import java.io.IOException;

public class CreateTempFileExample
{
    public static void main(String[] args)
    {

    	try{

    	   //create a temp file
    	   File temp = File.createTempFile("temp-file-name", ".tmp");

    	   System.out.println("Temp file : " + temp.getAbsolutePath());

    	}catch(IOException e){

    	   e.printStackTrace();

    	}

    }
}

Cómo veis, todo se limita a llamar al método createTempFile de la clase File. Le pasamos una base para el nombre temporal (y una extensión si queremos) y se creará el fichero temporal de manera acorde con el sistema operativo que estemos utilizando (en Linux sería en /tmp y en Windows sería C:\Users\<user>\AppData\Local\Temp\).

Links

http://www.mkyong.com/java/how-to-create-temporary-file-in-java/

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>