bloque4:ficheros
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previa | |||
| bloque4:ficheros [04/03/2018 17:50] – [Paquete java.io] Fernando Valdeón | bloque4:ficheros [05/03/2018 11:38] (actual) – borrado Fernando Valdeón | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== Manejo de ficheros de texto ====== | ||
| - | ==== Paquete java.io ==== | ||
| - | Aparte de la entrada y salida estándar representadas por la clase '' | ||
| - | La mayoría de las clases para manejo de ficheros están en el paquete '' | ||
| - | |||
| - | **La mayoría de operaciones con ficheros lanzan excepciones que debemos controlar**. | ||
| - | ===== Clase File ===== | ||
| - | La clase [[https:// | ||
| - | |||
| - | **Un objeto File es solamente una asociación a un fichero en el sistema; No tiene por qué existir.** | ||
| - | |||
| - | ==== Uso de la clase File ==== | ||
| - | Para crear una instancia de File indicamos el nombre del fichero mediante un String: | ||
| - | '' | ||
| - | |||
| - | El nombre del fichero puede estar compuesta simplemente por su nombre (ruta relativa) o por una ruta absoluta. **Siempre que indiquemos solo un nombre, se parte del directorio base del proyecto**. | ||
| - | |||
| - | **Métodos: | ||
| - | ^Método^Descripción^ | ||
| - | |boolean createNewFile()|Crea el fichero asociado al objeto File. Para poder crearlo, no debe existir| | ||
| - | |boolean mkdir()|Crea el directorio asociado al objeto File| | ||
| - | |boolean delete()|Elimina el fichero o directorio. Si es un directorio debe estar vacío| | ||
| - | |boolean exists()|true si el fichero representado existe| | ||
| - | |String getName()| Devuelve el nombre del fichero o directorio| | ||
| - | |boolean isDirectory()|true si es un directorio| | ||
| - | |boolean isFile()|true si es un fichero| | ||
| - | |String getPath()|Devuelve la ruta con la que se creó el objeto| | ||
| - | |String getAbsolutePath()|Devuelve la ruta absoluta| | ||
| - | |File getParentFile()|Devuelve un objeto File asociado al directorio que contiene el objeto actual| | ||
| - | |long length()|Devuelve el tamaño en bytes del fichero, ó 0 si no existe.| | ||
| - | |boolean mkdirs()|Crea todos los directorios especificados en la ruta del objeto File, aunque no existan| | ||
| - | |boolean renameTo(File dest)|Renombra el fichero| | ||
| - | |String[] list()|Devuelve un array con los nombres de los archivos o directorios que contiene el directorio asociado al objeto File. null si no es un directorio| | ||
| - | |||
| - | <code java> | ||
| - | File fichero = new File(" | ||
| - | if(fichero.exists()){ | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | }else{ | ||
| - | | ||
| - | } | ||
| - | |||
| - | File directorio = new File(“src\\directorio1”); | ||
| - | directorio.mkdir(); | ||
| - | |||
| - | </ | ||
| - | ===== Clase PrintWriter ===== | ||
| - | La clase PrintWriter es una de las más fáciles de usar a la hora de escribir texto en un fichero. | ||
| - | Usa los mismo métodos con los que escribimos por pantalla con '' | ||
| - | |||
| - | __Si el fichero no existe, se crea. Si ya existe, se sobrescribe__. | ||
| - | |||
| - | <code java> | ||
| - | // | ||
| - | File fichero = new File(" | ||
| - | PrintWriter escritor = new PrintWriter(fichero); | ||
| - | |||
| - | //o directamente | ||
| - | PrintWriter escritor = new PrintWriter(" | ||
| - | |||
| - | //escribir el contenido de un array de String en fichero | ||
| - | for(int i = 0; i < array.length; | ||
| - | | ||
| - | } | ||
| - | |||
| - | //cerramos el PrintWriter | ||
| - | escritor.close(); | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | Hay que tener en cuenta que las clases de entrada/ | ||
| - | |||
| - | === Añadir texto a un fichero existente === | ||
| - | Siempre que escribamos en un fichero que ya existe, el fichero se sobrescribirá. | ||
| - | PrintWriter no tiene control sobre esto, pero si la clase de la que hereda '' | ||
| - | |||
| - | Para añadir texto a un fichero en lugar de sobrescribirlo, | ||
| - | |||
| - | <code java> | ||
| - | //Indicando true en el constructor de FileWriter, añadimos texto | ||
| - | File fichero = new File(" | ||
| - | FileWriter filewriter = new FileWriter(fichero, | ||
| - | PrintWriter escritor = new PrintWriter(filewriter); | ||
| - | |||
| - | //o sin el objeto File | ||
| - | FileWriter filewriter = new FileWriter(" | ||
| - | PrintWriter escritor = new PrintWriter(filewriter); | ||
| - | </ | ||
| - | ===== Leer con Scanner ===== | ||
| - | La clase Scanner permite leer desde distintos flujos de entrada. Habitualmente hemos usado el flujo estándar '' | ||
| - | |||
| - | En este caso __necesitamos siempre un objeto File__, pero es la forma más sencilla de leer un fichero de texto. | ||
| - | |||
| - | <code java> | ||
| - | File fichero = new File(" | ||
| - | Scanner lector = new Scanner(fichero); | ||
| - | |||
| - | String cadenaLeida = lector.nextLine(); | ||
| - | int enteroLeido = lector.nextInt(); | ||
| - | |||
| - | lector.close(); | ||
| - | </ | ||
| - | |||
| - | En algunos casos necesitamos leer desde un fichero sin saber cuantas lineas tiene: | ||
| - | |||
| - | <code java> | ||
| - | File fichero = new File(" | ||
| - | Scanner lector = new Scanner(fichero); | ||
| - | |||
| - | //leo una linea, mientras queden lineas en el fichero | ||
| - | while(lector.hasNextLine()){ | ||
| - | | ||
| - | } | ||
| - | lector.close() | ||
| - | </ | ||
| - | |||
| - | ===== Control de Excepciones ===== | ||
| - | Si hemos trabajado con fichero nos habremos dado cuenta de que lanzan excepciones que debemos de controlar si queremos usar estas clases. | ||
| - | |||
| - | El control de excepciones se puede hacer de muchas formas, pero hay algo que debemos intentar hacer siempre: | ||
| - | |||
| - | **asegurarnos de cerrar los recursos que puedan estar abiertos**. | ||
| - | |||
| - | Para ello podemos usar la sentencia '' | ||
| - | |||
| - | <code java> | ||
| - | FileWriter filewriter = null; | ||
| - | PrintWriter escritor = null; | ||
| - | try { | ||
| - | | ||
| - | | ||
| - | |||
| - | // | ||
| - | |||
| - | } catch (IOException e) { | ||
| - | | ||
| - | }finally{ | ||
| - | try { | ||
| - | if(filewriter != null) filewriter.close(); | ||
| - | if(escritor != null) escritor.close(); | ||
| - | } catch (IOException e) { | ||
| - | e.printStackTrace(); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | ===== Otras formas de escribir en fichero ===== | ||
| - | Aunque la clase PrintWriter sea la más sencilla de usar, también podemos necesitar otros modos de escritura: | ||
| - | |||
| - | * FileWriter: la necesitamos para indicar si queremos o no añadir texto a un fichero. | ||
| - | * BufferedWriter: | ||
| - | |||
| - | Todas las clases se pueden usar de forma conjunta: | ||
| - | |||
| - | <code java> | ||
| - | |||
| - | FileWriter fw = new FileWriter(" | ||
| - | BufferedWriter bf = new BufferedWriter(fw); | ||
| - | PrintWriter escritor = new PrintWriter(bf); | ||
| - | |||
| - | escritor.println(" | ||
| - | |||
| - | escritor.close() | ||
| - | </ | ||
| - | |||
| - | Basta con cerrar el elemento que // | ||
| - | |||
| - | ===== Otras formas de leer desde fichero ===== | ||
| - | Aparte de la clase Scanner, existen otras clases para leer desde fichero: | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | <code java> | ||
| - | FileReader fr = new FileReader(" | ||
| - | BufferedReader lector = new BufferedReader(fr); | ||
| - | |||
| - | String cadenaLeida = lector.readLine(); | ||
| - | while(cadenaLeida != null){ | ||
| - | | ||
| - | | ||
| - | } | ||
| - | |||
| - | lector.close(); | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | ---- | ||
| - | |||
| - | (c) {{date> %Y}} Fernando Valdeón | ||
bloque4/ficheros.1520185845.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)
