Post

Manejo de archivos

Manejo de archivos

El manejo de archivos es una parte esencial de cualquier aplicación, en Java existen varios métodos de crear, escribir, leer y eliminar archivos.

La clase File del paquete java.io, permite trabajar con archivos.

1
2
3
4
5
6
7
// Crea un objeto de la clase `File` del paquete `java.io` para crear un archivo

import java.io.File;

public class main{
  File miObjeto = new File("test.txt");
}

La clase File tiene muchos métodos útiles para crear y obtener información sobre archivos:

MétodoTipoDescripción
canRead()BooleanPrueba si el archivo es legible o no
canWrite()BooleanPrueba si el archivo es escribible o no
createNewFile()BooleanCrea un archivo vacío
delete()BooleanElimina un archivo
exists()BooleanPrueba si el archivo existe
getName()StringDevuelve el nombre del archivo
getAbsolutePath()StringDevuelve la ruta absoluta del archivo
length()LongDevuelve el tamaño del archivo en bytes
list()String[]Devuelve un array de los archivos en el directorio
mkdir()BooleanCrea un directorio

Crear / Escribir archivos

Para crear un archivo en Java, podemos utilizar el método createNewFile(), este nos devuelve un valor booleano true si el archivo se creó correctamente y false si el archivo ya exist. Hay que tener en cuenta que el método lo tendremos que encerrar en un try..catch ya que si el método arroja un IOExeption nuestro programa de detendrá.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.File;
import java.io.IOException;

public class main{
  public static void main(String[] args){
    try{
      File miObjeto = new File("test.txt");
      if (miObjeto.createNewFile()){
        System.out.println("Archivo creado: " + miObjeto.getName());
      } else {
        System.out.println("El archivo ya existe");
      }
    } catch (IOExecptio e) {
      System.out.println("Algo salio mal");
      e.printStackTrace();
    }
  }
}

En el caso de que queramos indicar una ruta bastara con escribirla

1
File miObjeto = new File("/home/alejandroalsa.es/test.txt");

En el siguiente ejemplo escribiremos algo de texto en el archivo que acabamos de crear, para ello utilizaremos la clase FileWtriterjunto con su método Write(). Tenemos que tener en cuenta que cuando haya terminado de escribir en el archivo, debemos cerrarlo con el método close()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class main {
  public static void main(String[] args) {
    try {
      File miObjeto = new File("test.txt");
      if (miObjeto.createNewFile()) {
        System.out.println("Archivo creado: " + miObjeto.getName());

        FileWriter texto = new FileWriter(miObjeto);
        texto.write("Visita https://alejandroalsa.es para leer contenido de calidad.");
        texto.close();

        System.out.println("Contenido agregado exitosamente");
      } else {
        System.out.println("El archivo ya existe");
      }
    } catch (IOException e) {
      System.out.println("Algo salió mal");
      e.printStackTrace();
    }
  }
}

Leer archivos

Para poder leer archivos utilizamos la clase Scanner del paquete java.util

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.io.File;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;

public class main {
  public static void main(String[] args) {
    try {
      File miObjeto = new File("test.txt");
      if (miObjeto.createNewFile()) {
        System.out.println("Archivo creado: " + miObjeto.getName());

        FileWriter texto = new FileWriter(miObjeto);
        texto.write("Visita https://alejandroalsa.es para leer contenido de calidad.");
        texto.close();

        System.out.println("Contenido agregado exitosamente");
      } else {
        System.out.println("El archivo ya existe");
      }

      Scanner lectura = new Scanner(miObjeto);
      while (lectura.hasNextLine()) {
        String contenido = lectura.nextLine();
        System.out.println("Contenido del archivo: " + contenido);
      }
      lectura.close();
    } catch (FileNotFoundException e) {
      System.out.println("Algo salió mal");
      e.printStackTrace();
    } catch (IOException e) {
      System.out.println("Algo salió mal");
      e.printStackTrace();
    }
  }
}

También podemos obtener información del archivo haciendo uso de cualquiera de los métodos de File

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.io.File;

public class main {
  public static void main(String[] args) {
    File miObjeto = new File("test.txt");
    if (miObjeto.exists()) {
      System.out.println("Nombre del archivo: " + miObjeto.getName());
      System.out.println("Directorio: " + miObjeto.getAbsolutePath());
      System.out.println("Escritura: " + miObjeto.canWrite());
      System.out.println("Lectura " + miObjeto.canRead());
      System.out.println("Tamaño en bytes " + miObjeto.length());
    } else {
      System.out.println("El archivo no existe");
    }
  }
}

NOTA: Hay muchas clases disponibles en la API de Java que se pueden usar para leer y escribir archivos en Java: FileReader, BufferedReader, Files, Scanner, FileInputStream, FileWriter, BufferedWriter, FileOutputStream, etc. Cuál usar depende de la versión de Java con la que estés trabajando y de si necesitas leer bytes o caracteres, y el tamaño del archivo/líneas, etc.

Eliminar archivos

Para eliminar un archivo en Java utilizamos el método delete()

1
2
3
4
5
6
7
8
9
10
11
12
import java.io.File;

public class main {
  public static void main(String[] args) { 
    File miObjeto = new File("test.txt"); 
    if (miObjeto.delete()) { 
      System.out.println("Archivo eliminado: " + miObjeto.getName());
    } else {
      System.out.println("No se puede eliminar el archivo: " + miObjeto.getName());
    } 
  } 
}

NOTA: Si queremos eliminar una carpeta solo tendremos que indicar la ruta, pero tenemos que tener en cuenta que si esta carpeta ya tiene archivos Java no la eliminara.

This post is licensed under CC BY 4.0 by the author.