miércoles, 8 de enero de 2014

Manejo de Archivos en Java con File

En java contamos con una librería capaz de manejar algunas ordenes comunes del sistema operativo,tales como borrar,renombrar,ver permisos de un archivo.

En este tutorial vamos a aprender a usar este modulo para llevar a cabo dichas tareas:

Primero tenemos que importar la libreria necesaria:

import java.io.File;

Ahora vamos a ver un ejemplo sencillo,la clase que hace todo el trabajo es File,sus constructores son:

1
2
3
4
5
6
7
new File(pathname)

new File(uri)

new File(parent, child)

new File(parent, child)

Nosotros vamos a usar el primero,solo vamos a pasar el nombre de un archivo,por ejemplo vamos a crear uno:

Primero definimos un objeto file:

File archivo = new File("noexiste.txt");

Ahora usamos la función createNewFile(),regularmente podemos usar un comprobador,por ejemplo:


1
2
3
4
5
6
boolean accion = archivo.createNewFile();

if (accion)
   System.out.println("Se creo archivo");
else
   System.out.println("No creo archivo");	

Para esto necesitamos añadir un tratamiento de excepción IOException a la función que usa esta función:


1
2
3
4
5
6
public static void main(String[] args) throws IOException {
	File archivo = new File("noexiste.txt");
	boolean accion = archivo.createNewFile();
	if (accion)
		System.out.println("Se creo");
}

Ahora ya teniendo el archivo creado vamos a usar algunas mas para manipularlo:

Para saber si un archivo existe,usamos la funcion exists() que devuelve un boolean true si existe y false si no existe,por ejemplo crear un archivo si no existe:



1
2
3
4
5
if (!archivo.exists()) {
	boolean accion = archivo.createNewFile();
	if (accion)
		System.out.println("Se creo");
}


Vamos a ver como se pueden ver los permisos de archivo,los cuales son leectura,escritura y ejecucion,como lo hemos visto en Unix,las funciones devuelven un boolean basado en su pregunta:


1
2
3
4
5
canExecute(); // Se puede ejecutar?

canRead(); // Se puede leer?

canWrite(); // Se puede escribir?


Esta funcion checa los permisos:


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
static void permisos (File x) {
	boolean sepuedeejecutar = x.canExecute();
	boolean sepuedeleer = x.canRead();
	boolean sepuedeescribir = x.canWrite();
	if (sepuedeejecutar)
		System.out.println("Se puede ejecutar");
	else
		System.out.println("No se puede ejecutar");
	if (sepuedeleer)
		System.out.println("Se puede leer");
	else
		System.out.println("No se puede leer");
	if (sepuedeescribir)
		System.out.println("Se puede escribir");
	else
		System.out.println("No se puede escribir");
}

Tambien contamos con una funcion para borrar un archivo la cual es delete(),esta devuelve un boolean en true si lo borra y en false si ocurre algo por lo cual no se borro,veamos una funcion que borra un archivo si existe:


1
2
3
4
5
6
7
if (!archivo.exists()) {
	boolean accion = archivo.delete();
	if (accion)
	   System.out.println("Se borro");
	else 
	   System.out.println("No se borro");
}

Ahora veamos el directorio padre del archivo y la ruta completa del archivo:

getAbsoluteFile() // Nos devuelve la ruta absoluta del archivo

getName() // Nos devuelve el nombre del archivo

Tambien contamos con otras funciones para ver si esta oculto el archivo o si es un archivo:

isFile() // Devuelve true si es un archivo

isHidden() // Devuelve true si esta oculto

Ahora vamos a ver lo mismo pero con directorios:

Crear un directorio:

Para crear un directorio se usa mkdir:

archivo.mkdir();

Para saber si existe usamos igualmente exist(),funcion para crear un directorio si no existe:


1
2
3
4
5
if (!archivo.exists()) {
	boolean accion = archivo.mkdir();
	if (accion)
		System.out.println("Se creo directorio");
}


Los permisos son los mismos de arriba menos execute().

canRead(); // Se puede leer?

canWrite(); // Se puede escribir?

Para saber el nombre del directorio podemos usar:

getPath()

o

getName()

Podemos ver los archivos que contiene un directorio iterando sobre lo que devuelve la funcion list(),que es un array de String:

Funcion para listar:


1
2
3
4
5
static void listar(File x) {
	String[] archivos = x.list();
	for (String a : archivos)
		System.out.println(a);
}

También podemos usar un filtro(lo veremos en su momento),de momento podemos ver como listar un directorio basado en una extensión:


1
 2
 3
 4
 5
 6
 7
 8
 9
10
FilenameFilter filtro = new FilenameFilter() {	
	@Override
	public boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		 String extension = ".txt";
		if (name.toLowerCase().endsWith(extension))
			return true;
		return false;
	}
};


Y hacemos esto:

String[] archivos = x.list(filtro);

Podemos hacer lo mismo pero en vez de que nos devulva un simple string,nos devuelva un objeto File,con todas las funciones aqui vistas:

listFiles();

Para cambiar el nombre de un archivo tenemos que crear otro objeto File y llamar el método renameTo:

File nuevo = new File("Nuevo nombre");
archivo.renameTo(nuevo);

Eso es todo :D

Mas info : http://docs.oracle.com/javase/6/docs/api/java/io/File.html

No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.