|
| 1 | +--- |
| 2 | +title: Manejo de archivos |
| 3 | +date: 2024-01-08 8:00:00 +0800 |
| 4 | +categories: [Programación, Java] |
| 5 | +tags: [Java] |
| 6 | +--- |
| 7 | + |
| 8 | +# Manejo de archivos |
| 9 | + |
| 10 | +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. |
| 11 | + |
| 12 | +La clase `File` del paquete `java.io`, permite trabajar con archivos. |
| 13 | + |
| 14 | +```java |
| 15 | +// Crea un objeto de la clase `File` del paquete `java.io` para crear un archivo |
| 16 | + |
| 17 | +import java.io.File; |
| 18 | + |
| 19 | +public class main{ |
| 20 | + File miObjeto = new File("test.txt"); |
| 21 | +} |
| 22 | +``` |
| 23 | + |
| 24 | +La clase `File` tiene muchos métodos útiles para crear y obtener información sobre archivos: |
| 25 | + |
| 26 | +| Método | Tipo | Descripción | |
| 27 | +| ----------------- | -------- | -------------------------------------------------- | |
| 28 | +| canRead() | Boolean | Prueba si el archivo es legible o no | |
| 29 | +| canWrite() | Boolean | Prueba si el archivo es escribible o no | |
| 30 | +| createNewFile() | Boolean | Crea un archivo vacío | |
| 31 | +| delete() | Boolean | Elimina un archivo | |
| 32 | +| exists() | Boolean | Prueba si el archivo existe | |
| 33 | +| getName() | String | Devuelve el nombre del archivo | |
| 34 | +| getAbsolutePath() | String | Devuelve la ruta absoluta del archivo | |
| 35 | +| length() | Long | Devuelve el tamaño del archivo en bytes | |
| 36 | +| list() | String[] | Devuelve un array de los archivos en el directorio | |
| 37 | +| mkdir() | Boolean | Crea un directorio | |
| 38 | + |
| 39 | +## Crear / Escribir archivos |
| 40 | + |
| 41 | +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á. |
| 42 | + |
| 43 | +```java |
| 44 | +import java.io.File; |
| 45 | +import java.io.IOException; |
| 46 | + |
| 47 | +public class main{ |
| 48 | + public static void main(String[] args){ |
| 49 | + try{ |
| 50 | + File miObjeto = new File("test.txt"); |
| 51 | + if (miObjeto.createNewFile()){ |
| 52 | + System.out.println("Archivo creado: " + miObjeto.getName()); |
| 53 | + } else { |
| 54 | + System.out.println("El archivo ya existe"); |
| 55 | + } |
| 56 | + } catch (IOExecptio e) { |
| 57 | + System.out.println("Algo salio mal"); |
| 58 | + e.printStackTrace(); |
| 59 | + } |
| 60 | + } |
| 61 | +} |
| 62 | +``` |
| 63 | + |
| 64 | +En el caso de que queramos indicar una ruta bastara con escribirla |
| 65 | + |
| 66 | +```java |
| 67 | +File miObjeto = new File("/home/alejandroalsa.es/test.txt"); |
| 68 | +``` |
| 69 | + |
| 70 | +En el siguiente ejemplo escribiremos algo de texto en el archivo que acabamos de crear, para ello utilizaremos la clase `FileWtriter`junto 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()` |
| 71 | + |
| 72 | +```java |
| 73 | +import java.io.File; |
| 74 | +import java.io.FileWriter; |
| 75 | +import java.io.IOException; |
| 76 | + |
| 77 | +public class main { |
| 78 | + public static void main(String[] args) { |
| 79 | + try { |
| 80 | + File miObjeto = new File("test.txt"); |
| 81 | + if (miObjeto.createNewFile()) { |
| 82 | + System.out.println("Archivo creado: " + miObjeto.getName()); |
| 83 | + |
| 84 | + FileWriter texto = new FileWriter(miObjeto); |
| 85 | + texto.write("Visita https://alejandroalsa.es para leer contenido de calidad."); |
| 86 | + texto.close(); |
| 87 | + |
| 88 | + System.out.println("Contenido agregado exitosamente"); |
| 89 | + } else { |
| 90 | + System.out.println("El archivo ya existe"); |
| 91 | + } |
| 92 | + } catch (IOException e) { |
| 93 | + System.out.println("Algo salió mal"); |
| 94 | + e.printStackTrace(); |
| 95 | + } |
| 96 | + } |
| 97 | +} |
| 98 | +``` |
| 99 | + |
| 100 | +## Leer archivos |
| 101 | + |
| 102 | +Para poder leer archivos utilizamos la clase `Scanner` del paquete `java.util` |
| 103 | + |
| 104 | +```java |
| 105 | +import java.io.File; |
| 106 | +import java.io.FileWriter; |
| 107 | +import java.io.FileNotFoundException; |
| 108 | +import java.io.IOException; |
| 109 | +import java.util.Scanner; |
| 110 | + |
| 111 | +public class main { |
| 112 | + public static void main(String[] args) { |
| 113 | + try { |
| 114 | + File miObjeto = new File("test.txt"); |
| 115 | + if (miObjeto.createNewFile()) { |
| 116 | + System.out.println("Archivo creado: " + miObjeto.getName()); |
| 117 | + |
| 118 | + FileWriter texto = new FileWriter(miObjeto); |
| 119 | + texto.write("Visita https://alejandroalsa.es para leer contenido de calidad."); |
| 120 | + texto.close(); |
| 121 | + |
| 122 | + System.out.println("Contenido agregado exitosamente"); |
| 123 | + } else { |
| 124 | + System.out.println("El archivo ya existe"); |
| 125 | + } |
| 126 | + |
| 127 | + Scanner lectura = new Scanner(miObjeto); |
| 128 | + while (lectura.hasNextLine()) { |
| 129 | + String contenido = lectura.nextLine(); |
| 130 | + System.out.println("Contenido del archivo: " + contenido); |
| 131 | + } |
| 132 | + lectura.close(); |
| 133 | + } catch (FileNotFoundException e) { |
| 134 | + System.out.println("Algo salió mal"); |
| 135 | + e.printStackTrace(); |
| 136 | + } catch (IOException e) { |
| 137 | + System.out.println("Algo salió mal"); |
| 138 | + e.printStackTrace(); |
| 139 | + } |
| 140 | + } |
| 141 | +} |
| 142 | +``` |
| 143 | + |
| 144 | +También podemos obtener información del archivo haciendo uso de cualquiera de los métodos de `File` |
| 145 | + |
| 146 | +```java |
| 147 | +import java.io.File; |
| 148 | + |
| 149 | +public class main { |
| 150 | + public static void main(String[] args) { |
| 151 | + File miObjeto = new File("test.txt"); |
| 152 | + if (miObjeto.exists()) { |
| 153 | + System.out.println("Nombre del archivo: " + miObjeto.getName()); |
| 154 | + System.out.println("Directorio: " + miObjeto.getAbsolutePath()); |
| 155 | + System.out.println("Escritura: " + miObjeto.canWrite()); |
| 156 | + System.out.println("Lectura " + miObjeto.canRead()); |
| 157 | + System.out.println("Tamaño en bytes " + miObjeto.length()); |
| 158 | + } else { |
| 159 | + System.out.println("El archivo no existe"); |
| 160 | + } |
| 161 | + } |
| 162 | +} |
| 163 | +``` |
| 164 | + |
| 165 | +> 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. |
| 166 | +
|
| 167 | +## Eliminar archivos |
| 168 | + |
| 169 | +Para eliminar un archivo en Java utilizamos el método `delete()` |
| 170 | + |
| 171 | +```java |
| 172 | +import java.io.File; |
| 173 | + |
| 174 | +public class main { |
| 175 | + public static void main(String[] args) { |
| 176 | + File miObjeto = new File("test.txt"); |
| 177 | + if (miObjeto.delete()) { |
| 178 | + System.out.println("Archivo eliminado: " + miObjeto.getName()); |
| 179 | + } else { |
| 180 | + System.out.println("No se puede eliminar el archivo: " + miObjeto.getName()); |
| 181 | + } |
| 182 | + } |
| 183 | +} |
| 184 | +``` |
| 185 | + |
| 186 | +> 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. |
0 commit comments