{"id":375,"date":"2013-09-01T21:32:37","date_gmt":"2013-09-01T21:32:37","guid":{"rendered":"http:\/\/karstieltopia.com\/?p=375"},"modified":"2016-02-20T05:43:58","modified_gmt":"2016-02-20T05:43:58","slug":"crear-un-fichero-temporal-en-java","status":"publish","type":"post","link":"http:\/\/karstieltopia.com\/programacion\/java\/crear-un-fichero-temporal-en-java\/","title":{"rendered":"Crear un fichero temporal en Java"},"content":{"rendered":"
Crear un fichero temporal puede parecer tan tonto como simplemente crear un fichero con un nombre y luego usarlo. Y s\u00ed que b\u00e1sicamente ser\u00eda eso, pero \u00bfqu\u00e9 pasa si volvemos a arrancar el programa que hemos generado? Pues que se encontrar\u00eda el fichero ya creado y a lo mejor a\u00f1ade algo al final o lo lee entero y falla.<\/p>\n
Tambi\u00e9n podemos optar por borrarlo al terminar de usarlo y ya estar\u00eda porque si volvemos a arrancarlo, no estar\u00eda el fichero.<\/p>\n
Pero aun as\u00ed habr\u00eda posibilidad de error dado que \u00bfy si el programa que estamos utilizando es multihilo y accedemos en diferentes hilos a ese fichero? Tambi\u00e9n pasar\u00eda lo mismo si lanz\u00e1semos varios forks del mismo proceso.<\/p>\n
Por ello es recomendable utilizar siempre alg\u00fan sistema que permita garantizar relativamente el nombre de un fichero. Por ejemplo, en Linux nos podemos encontrar el comando mktemp<\/em> <\/strong>que crea un fichero temporal en \/tmp.<\/p>\n \u00bfPero y si estamos desarrollando en Java y queremos que sea independiente de la plataforma? Pues aqu\u00ed os dejo un ejemplo sencillo de c\u00f3mo ser\u00eda la creaci\u00f3n de un fichero temporal:<\/p>\n C\u00f3mo veis, todo se limita a llamar al m\u00e9todo createTempFile de la clase File. Le pasamos una base para el nombre temporal (y una extensi\u00f3n si queremos) y se crear\u00e1 el fichero temporal de manera acorde con el sistema operativo que estemos utilizando (en Linux ser\u00eda en \/tmp y en Windows ser\u00eda C:\\Users\\<user>\\AppData\\Local\\Temp\\).<\/p>\n\r\nimport java.io.File;\r\nimport java.io.IOException;\r\n\r\npublic class CreateTempFileExample\r\n{\r\n public static void main(String[] args)\r\n {\r\n\r\n \ttry{\r\n\r\n \t \/\/create a temp file\r\n \t File temp = File.createTempFile("temp-file-name", ".tmp");\r\n\r\n \t System.out.println("Temp file : " + temp.getAbsolutePath());\r\n\r\n \t}catch(IOException e){\r\n\r\n \t e.printStackTrace();\r\n\r\n \t}\r\n\r\n }\r\n}\r\n<\/pre>\n