SlideShare uma empresa Scribd logo
1 de 25
Navegación de Archivos e I/O Expositor: Alex http://javatutoriales.blogspot.com/ Se permite hacer preguntas en cualquier momento.
I/O I/O es un gran tópico en general, y las APIs de Java para uso, tanto de entrada como de salida, son también bastante aplia. Una discusión general de I/O puede incluir tópicos como I/O de archivos, I/O de consola, I/O de threads, I/O de alto rendimiento, I/O orientado a bytes, I/O orientado a caracteres, filtros y wrapping de I/O, serialización, etc. Afortunadamente en el examen I/O esta restringido a archivos de caracteres y Serialización. 21/04/2011 Alex Montoya - SCJP 5 2
Clases de I/O para el Examen File: Es una representación abstracta de un archivo o directorio. Se usa para leer o escribir datos a un alto nivel FileReader: Es usada para leer archivos de caracteres a través de múltiples métodos read() BufferedReader: Es usada para hacer a las clases Reader de bajo nivel más eficientes y fáciles de usar. FileWriter: Es usada para escribir archivos de caracteres a través de múltiples métodos write() BufferedWriter: Es usada para hacer a las clases Writer de bajo nivel más eficientes y fáciles de usar PrintWriter: A partir de la versión 5 es posible usarla como wrapper de diversas clases de escritura de archivos 21/04/2011 Alex Montoya - SCJP 5 3
Creando Archivos Usando la Clase File Los objetos de tipo File son usados representar archivos (pero no los datos en ellos) o directorios que existen en el disco físico de la computadora: import java.io.*;  class Escritor {  	public static void main(String [] args) { File file = new File(“archivo1.txt"); 	}  }  21/04/2011 Alex Montoya - SCJP 5 4
Creando Archivos Usando la Clase File (2) Cuando creamos una nueva instancia de la clase File no estamos creado el archivo, solo el nombre. Cuando ya tenemos este objeto, hay muchas formas de crear el archivo: import java.io.*;  class Escritor {      public static void main(String [] args) {          try {  	     boolean nuevo = false;  	     File file = new File (“archivo1.txt");  	     System.out.println(file.exists());  	     nuevo = file.createNewFile();  	     System.out.println(nuevo); 				     System.out.println(file.exists());         }          catch(IOException e) { }     }  } 21/04/2011 Alex Montoya - SCJP 5 5
Usando FileWriter y FileReader En la práctica no se usan FileReader y FileWriter si ser envueltas, sin embargo en el examen se espera que sepan cómo funcionan: class Escritor2 {  	public static void main(String [] args) {  		char[] entrada = new char[50];  		int tamaño = 0;  		try {  			File file = new File(“archivo2.txt"); FileWriter fw = new FileWriter(file); 			fw.write(“saludosamigos");  			fw.flush();  			fw.close();  			FileReader fr = new FileReader(file); 		 			tamaño = fr.read(entrada);  			System.out.print(tamaño + " ");  			for(char c : entrada)  				System.out.print(c);  			fr.close();  		}catch(IOException e) { }  	}  }  21/04/2011 Alex Montoya - SCJP 5 6
Usando FileWriter y FileReader (2) Esto es lo que ocurre en el código anterior: FileWriter fw = new FileWriter(file) hace tres cosas: Crea una nueva referencia a un FileWriter llamada fw Crea un nuevo objeto FileWriter y lo asigna a la referencia fw Crea el archivo nuevo vacío en disco duro  Escribimos 15 caracteres en el archivo con el método write(), hacemos un flush() y un close() Creamos un nuevo FileReader, que abre un archivo para lectura El método read() lee el archivo completo, un carácter a la vez, y lo ponen en el char[] entrada Imprimimos el número de caracteres que se leyeron, e imprimimos después cada uno de los caracteres colocados en el char[] entrada, y cerramos el archivo 21/04/2011 Alex Montoya - SCJP 5 7
flush() y close() Cuando escribimos datos en un stream, ocurre un proceso de buffering, y no podemos estar seguros cuándo se enviará el último trozo de datos.  Podemos realizar muchas operaciones de escritura en un stream antes de cerrarlo, e invocar el método flush() que los últimos datos que enviamos han sido escritos en el archivo. Cada vez que terminamos de escribir un archivo, ya sea para leer o para escribir, debemos llamar a close(). Cuando hacemos I/O de archivos estamos usando recursos caros y limitados del sistema operativo, y cuando invocamos a close()liberamos estos recursos. 21/04/2011 Alex Montoya - SCJP 5 8
Usando FileWriter y FileReader (3) El programa anterior funciona, sin embargo presenta algunas limitaciones:   Cuando escribimos los datos en el archivo, insertamos de forma manual los separadores de línea.  Cuando leemos los datos los ponemos en un arreglo. Al tratarse de un arreglo es necesario declarar su tamaño, por lo que si no lo hacemos del tamaño adecuado tendremos problemas al leer estos datos. Es por estas limitaciones que tipicamente usamos clases de más alto nivel como BufferedReader o BufferedWriter en combinación con FileReader o FileWritter. 21/04/2011 Alex Montoya - SCJP 5 9
Combinando Clases de I/O Todo el sistema de I/O de Java está diseñado para usar muchas clases en combinadas. Combinar estás clases es llamado envolver (wrapping) y algunas veces es llamado encadenar (chaining). El paquete java.io contiene alrededor de 50 clases, 10 interfaces, y 15 excepciones. Cada clase en el paquete tiene un propósito muy específico, y las clases están diseñadas para ser combinadas con otras para manejar una variedad de situaciones. 21/04/2011 Alex Montoya - SCJP 5 10
Mini API de java.io Clase                  Clase Base   Argumentos de los constructores principales	      Métodos Importantes    File             Object      File, String		   createNewFile() 		            String	                       delete() 		            String, String	             exists() 				                       isDirectory() 				                       isFile() 				                       list() 				                       mkdir() 				                       renameTo()    FileWriter       Writer      File	                       close() 		            String	                       flush() 				                       write()    BufferedWriter   Writer      Writer		             close() 				                       flush() 				                       newLine() 				                       write()    PrintWriter      Writer      File		             close() 		            String	                       flush() 		            OutputStream                   printf() 		            Writer                         println() 				                       write()    FileReader       Reader      File	                       read() 		            String			   read()    BufferedReader   Reader      Reader	                       readLine() 21/04/2011 Alex Montoya - SCJP 5 11
Decidiendo qué Clases Usar Ahora busquemos una mejor forma de escribir datos en un archivo y leer los datos nuevamente a memoria. Este es el proceso que clases necesitamos para escribir los datos: 21/04/2011 Alex Montoya - SCJP 5 12 Sabemos que queremos usar un objeto File. Así que cualquier otra clase debe tener un constructor que reciba un File. Buscamos un método que nos permita hacer esta tarea de forma más sencilla. Construimos el objeto de la clase necesaria y lo utilizamos
Decidiendo qué Clases Usar (2) Por lo que el nuevo código puede quedar de la siguiente forma: File file = new File(“archivo.txt”); PrintWriter pw = new PrintWriter(file); fw.println(“saludos”); fw.println(“amigos”); 21/04/2011 Alex Montoya - SCJP 5 13
Decidiendo qué Clases Usar (3) Para leer los datos hacemos lo mismo: File file = new File(“archivo.txt”); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String datos = br.readLine(); 21/04/2011 Alex Montoya - SCJP 5 14
Trabajando con Archivos y Directorios Ya habíamos dicho que la clase File es usada para crear archivos y directorios. Además los métodos de File pueden ser usados para borrar directorios, renombrar archivos, saber si un archivo existe, crear archivos temporales, cambiar los atributos de un archivo, y diferenciar entre archivos y directorios.	 21/04/2011 Alex Montoya - SCJP 5 15
Trabajando con Archivos y Directorios (2) Además vimos que: File file = new File("foo");  Crea un nuevo objeto File, y puede hacer una de dos cosas:  Si “foo” no existe, crea el archivo  Si “foo” existe, el nuevo File refiere al archivo 21/04/2011 Alex Montoya - SCJP 5 16
Trabajando con Archivos y Directorios (3) File file = new File(“foo”); NUNCA crea el arcivo. Hay dos formas de crearlo:  Invocar el método createNewFile del objeto File 2. Crear un Reader o un Writer o un Stream. Específicamente, FileReader, FileWriter, PrintWriter, FileInputStream, o FileOutputStream. Cada vez que creamos una instancia de una de estas clases, creamos automáticamente un archivo, a menos que ya exista. 21/04/2011 Alex Montoya - SCJP 5 17
Trabajando con Archivos y Directorios (4) Crear un directorio es similar a crear un archivo. Es un proceso de dos fases; primero creamos un objeto directorio (File); después creamos el directorio usando el método mkdir(). File directorio  = new File(“dir”); directorio.mkdir(); Una vez que tenemos el directorio, ponemos archivos en el: File archivo = new File(directorio, “archivo.txt”); archivo.createNewFile(); 21/04/2011 Alex Montoya - SCJP 5 18
Trabajando con Directorios Hay que tener cuidado cuando trabajamos con directorios. Como hemos visto, construir un Reader o un Writer crea de forma automática un archivo si no existe, pero esto no funciona con directorios: File directorio = new File(“dir”); File archivo = new File(directorio, “archivo.txt”); archivo.createNewFile(); 21/04/2011 Alex Montoya - SCJP 5 19
Trabajando con Directorios (2) Un objeto File puede referir a un archivo o un directorio.  Para verificar a qué refiere podemos usar los métodos isFile() isDirectory() 21/04/2011 Alex Montoya - SCJP 5 20
Trabajando con Directorios (3) File dir = new File(“dir");  System.out.println(dir.isDirectory());  File archivo = new File(dir, “archivo.txt");  System.out.println (archivo.isFile());  FileReader fr = new FileReader(archivo); BufferedReader br = new BufferedReader(fr);  String s;  while( (s = br.readLine()) != null)  	System.out.printIn(s);  21/04/2011 Alex Montoya - SCJP 5 21
Otros Métodos Útiles Además de crear archivos los métodos de la clase File nos permiten hacer cosas como renombrar archivos y derectorios, y borrar archivos y directorios con los métodos renameTo y delete respectivamente: File dir = new File(“dir”); File nuevo = new File(“otro”); dir.renameTo(nuevo); dir.delete(); 21/04/2011 Alex Montoya - SCJP 5 22
Otros Métodos Útiles (2) Hay algunas cosas importantes que hay que saber sobre delete y renameTo: delete: No podemos borrar directorios que no estén vacíos  renameTo: Debemos dar al objeto File existente un objeto nuevo File válido con el nombre que queramos. renameTo: Podemos renombrar un directorio aún si este no está vacio. 21/04/2011 Alex Montoya - SCJP 5 23
¿Alguna Pregunta? 21/04/2011 Alex Montoya - SCJP 5 24
Gracias 21/04/2011 Alex - Programación Orientada a Aspectos 25 programadorjavablog@gmail.com http://javatutoriales.blogspot.com/ Java Tutoriales en Facebook

Mais conteúdo relacionado

Mais procurados

Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
Antonio Palomares Sender
 

Mais procurados (18)

Metodos de entrada y Salida
Metodos de entrada y SalidaMetodos de entrada y Salida
Metodos de entrada y Salida
 
Cap 9
Cap 9Cap 9
Cap 9
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
 
Ant tutorial
Ant tutorialAnt tutorial
Ant tutorial
 
Comandos de manejo de archivos y directorio
Comandos de manejo de archivos y directorio Comandos de manejo de archivos y directorio
Comandos de manejo de archivos y directorio
 
Unidad 6: Flujos y Archivos Ejercicio 4
Unidad 6: Flujos y Archivos Ejercicio 4Unidad 6: Flujos y Archivos Ejercicio 4
Unidad 6: Flujos y Archivos Ejercicio 4
 
Guia cap 9 dorazio 11 11
Guia cap 9 dorazio 11 11Guia cap 9 dorazio 11 11
Guia cap 9 dorazio 11 11
 
Comandos de manejo de archivos y directorio
Comandos de manejo de archivos y directorio Comandos de manejo de archivos y directorio
Comandos de manejo de archivos y directorio
 
Cap 9 archivos labuchaga - suarez
Cap 9 archivos   labuchaga - suarezCap 9 archivos   labuchaga - suarez
Cap 9 archivos labuchaga - suarez
 
Introduction to linux for bioinformatics
Introduction to linux for bioinformaticsIntroduction to linux for bioinformatics
Introduction to linux for bioinformatics
 
Tutorial de eclipse_yamary(2)
Tutorial de eclipse_yamary(2)Tutorial de eclipse_yamary(2)
Tutorial de eclipse_yamary(2)
 
Capitulo 9
Capitulo 9Capitulo 9
Capitulo 9
 
Flujo datos
Flujo datosFlujo datos
Flujo datos
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
(86)resumen visual basic
(86)resumen visual basic(86)resumen visual basic
(86)resumen visual basic
 
Suarez l 2001 el paquete java io
Suarez l 2001 el paquete java ioSuarez l 2001 el paquete java io
Suarez l 2001 el paquete java io
 
Unidad 6: Flujos y Archivos Ejercicio 1
Unidad 6: Flujos y Archivos Ejercicio 1Unidad 6: Flujos y Archivos Ejercicio 1
Unidad 6: Flujos y Archivos Ejercicio 1
 
Capitulo 9
Capitulo 9Capitulo 9
Capitulo 9
 

Destaque

Conceptos avanzados oo (presentación 4)
Conceptos avanzados oo (presentación 4)Conceptos avanzados oo (presentación 4)
Conceptos avanzados oo (presentación 4)
programadorjavablog
 
Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)
programadorjavablog
 
File reader y filewriter
File reader y filewriterFile reader y filewriter
File reader y filewriter
SynysterA7X
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
programadorjavablog
 

Destaque (8)

Lenguaje java5 (presentación2)
Lenguaje java5 (presentación2)Lenguaje java5 (presentación2)
Lenguaje java5 (presentación2)
 
Conceptos avanzados oo (presentación 4)
Conceptos avanzados oo (presentación 4)Conceptos avanzados oo (presentación 4)
Conceptos avanzados oo (presentación 4)
 
Java 5 se (presentación3)
Java 5 se (presentación3)Java 5 se (presentación3)
Java 5 se (presentación3)
 
Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)
 
File reader y filewriter
File reader y filewriterFile reader y filewriter
File reader y filewriter
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Uml (presentación 6)
Uml (presentación 6)Uml (presentación 6)
Uml (presentación 6)
 

Semelhante a Curso scjp 30 navegacion de archivos e io (20)

Manejo de archivos en java
Manejo de archivos en javaManejo de archivos en java
Manejo de archivos en java
 
Manejo de archivos en java
Manejo de archivos en javaManejo de archivos en java
Manejo de archivos en java
 
Manejo+de+archivos+en+java
Manejo+de+archivos+en+javaManejo+de+archivos+en+java
Manejo+de+archivos+en+java
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
 
Lab archivos
Lab archivosLab archivos
Lab archivos
 
Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivosc
 
Archivos c
Archivos cArchivos c
Archivos c
 
Archivos c
Archivos cArchivos c
Archivos c
 
Archivos
ArchivosArchivos
Archivos
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
7 manejo de archivos
7 manejo de archivos7 manejo de archivos
7 manejo de archivos
 
11. lectura y escritura de información
11. lectura y escritura de información11. lectura y escritura de información
11. lectura y escritura de información
 
Acceso a datos
Acceso a datosAcceso a datos
Acceso a datos
 
ARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE CARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE C
 
Archivos
ArchivosArchivos
Archivos
 
Archivos
ArchivosArchivos
Archivos
 
Open And Reading Files
Open And Reading FilesOpen And Reading Files
Open And Reading Files
 
3 1 1 entrada y salida con archivos
3 1 1 entrada y salida con archivos3 1 1 entrada y salida con archivos
3 1 1 entrada y salida con archivos
 
Lab6-POO
Lab6-POOLab6-POO
Lab6-POO
 
ARCHIVOS LENGUAJE C
ARCHIVOS LENGUAJE CARCHIVOS LENGUAJE C
ARCHIVOS LENGUAJE C
 

Mais de programadorjavablog (14)

Hibernate - Relaciones
Hibernate - RelacionesHibernate - Relaciones
Hibernate - Relaciones
 
Hibernate - Introducción
Hibernate - IntroducciónHibernate - Introducción
Hibernate - Introducción
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
7iSF-3 scrum
7iSF-3   scrum7iSF-3   scrum
7iSF-3 scrum
 
7iSF-2 rup
7iSF-2   rup7iSF-2   rup
7iSF-2 rup
 
7iSF-1 ingeniería de software
7iSF-1   ingeniería de software7iSF-1   ingeniería de software
7iSF-1 ingeniería de software
 
7iSF-6 temas extra
7iSF-6   temas extra7iSF-6   temas extra
7iSF-6 temas extra
 
7iSF-5 cmm
7iSF-5   cmm7iSF-5   cmm
7iSF-5 cmm
 
Curso scjp 4 declaracion de clases
Curso scjp 4   declaracion de clasesCurso scjp 4   declaracion de clases
Curso scjp 4 declaracion de clases
 
Curso scjp 3 identificadores y control de acceso
Curso scjp 3   identificadores y control de accesoCurso scjp 3   identificadores y control de acceso
Curso scjp 3 identificadores y control de acceso
 
Curso scjp 2 recordatorio de java
Curso scjp 2   recordatorio de javaCurso scjp 2   recordatorio de java
Curso scjp 2 recordatorio de java
 
ICEFaces 2.0
ICEFaces 2.0ICEFaces 2.0
ICEFaces 2.0
 
Html5
Html5Html5
Html5
 
Programación orientada a aspectos
Programación orientada a aspectosProgramación orientada a aspectos
Programación orientada a aspectos
 

Último

RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 

Último (20)

Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 

Curso scjp 30 navegacion de archivos e io

  • 1. Navegación de Archivos e I/O Expositor: Alex http://javatutoriales.blogspot.com/ Se permite hacer preguntas en cualquier momento.
  • 2. I/O I/O es un gran tópico en general, y las APIs de Java para uso, tanto de entrada como de salida, son también bastante aplia. Una discusión general de I/O puede incluir tópicos como I/O de archivos, I/O de consola, I/O de threads, I/O de alto rendimiento, I/O orientado a bytes, I/O orientado a caracteres, filtros y wrapping de I/O, serialización, etc. Afortunadamente en el examen I/O esta restringido a archivos de caracteres y Serialización. 21/04/2011 Alex Montoya - SCJP 5 2
  • 3. Clases de I/O para el Examen File: Es una representación abstracta de un archivo o directorio. Se usa para leer o escribir datos a un alto nivel FileReader: Es usada para leer archivos de caracteres a través de múltiples métodos read() BufferedReader: Es usada para hacer a las clases Reader de bajo nivel más eficientes y fáciles de usar. FileWriter: Es usada para escribir archivos de caracteres a través de múltiples métodos write() BufferedWriter: Es usada para hacer a las clases Writer de bajo nivel más eficientes y fáciles de usar PrintWriter: A partir de la versión 5 es posible usarla como wrapper de diversas clases de escritura de archivos 21/04/2011 Alex Montoya - SCJP 5 3
  • 4. Creando Archivos Usando la Clase File Los objetos de tipo File son usados representar archivos (pero no los datos en ellos) o directorios que existen en el disco físico de la computadora: import java.io.*; class Escritor { public static void main(String [] args) { File file = new File(“archivo1.txt"); } } 21/04/2011 Alex Montoya - SCJP 5 4
  • 5. Creando Archivos Usando la Clase File (2) Cuando creamos una nueva instancia de la clase File no estamos creado el archivo, solo el nombre. Cuando ya tenemos este objeto, hay muchas formas de crear el archivo: import java.io.*; class Escritor { public static void main(String [] args) { try { boolean nuevo = false; File file = new File (“archivo1.txt"); System.out.println(file.exists()); nuevo = file.createNewFile(); System.out.println(nuevo); System.out.println(file.exists()); } catch(IOException e) { } } } 21/04/2011 Alex Montoya - SCJP 5 5
  • 6. Usando FileWriter y FileReader En la práctica no se usan FileReader y FileWriter si ser envueltas, sin embargo en el examen se espera que sepan cómo funcionan: class Escritor2 { public static void main(String [] args) { char[] entrada = new char[50]; int tamaño = 0; try { File file = new File(“archivo2.txt"); FileWriter fw = new FileWriter(file); fw.write(“saludosamigos"); fw.flush(); fw.close(); FileReader fr = new FileReader(file); tamaño = fr.read(entrada); System.out.print(tamaño + " "); for(char c : entrada) System.out.print(c); fr.close(); }catch(IOException e) { } } } 21/04/2011 Alex Montoya - SCJP 5 6
  • 7. Usando FileWriter y FileReader (2) Esto es lo que ocurre en el código anterior: FileWriter fw = new FileWriter(file) hace tres cosas: Crea una nueva referencia a un FileWriter llamada fw Crea un nuevo objeto FileWriter y lo asigna a la referencia fw Crea el archivo nuevo vacío en disco duro Escribimos 15 caracteres en el archivo con el método write(), hacemos un flush() y un close() Creamos un nuevo FileReader, que abre un archivo para lectura El método read() lee el archivo completo, un carácter a la vez, y lo ponen en el char[] entrada Imprimimos el número de caracteres que se leyeron, e imprimimos después cada uno de los caracteres colocados en el char[] entrada, y cerramos el archivo 21/04/2011 Alex Montoya - SCJP 5 7
  • 8. flush() y close() Cuando escribimos datos en un stream, ocurre un proceso de buffering, y no podemos estar seguros cuándo se enviará el último trozo de datos. Podemos realizar muchas operaciones de escritura en un stream antes de cerrarlo, e invocar el método flush() que los últimos datos que enviamos han sido escritos en el archivo. Cada vez que terminamos de escribir un archivo, ya sea para leer o para escribir, debemos llamar a close(). Cuando hacemos I/O de archivos estamos usando recursos caros y limitados del sistema operativo, y cuando invocamos a close()liberamos estos recursos. 21/04/2011 Alex Montoya - SCJP 5 8
  • 9. Usando FileWriter y FileReader (3) El programa anterior funciona, sin embargo presenta algunas limitaciones: Cuando escribimos los datos en el archivo, insertamos de forma manual los separadores de línea. Cuando leemos los datos los ponemos en un arreglo. Al tratarse de un arreglo es necesario declarar su tamaño, por lo que si no lo hacemos del tamaño adecuado tendremos problemas al leer estos datos. Es por estas limitaciones que tipicamente usamos clases de más alto nivel como BufferedReader o BufferedWriter en combinación con FileReader o FileWritter. 21/04/2011 Alex Montoya - SCJP 5 9
  • 10. Combinando Clases de I/O Todo el sistema de I/O de Java está diseñado para usar muchas clases en combinadas. Combinar estás clases es llamado envolver (wrapping) y algunas veces es llamado encadenar (chaining). El paquete java.io contiene alrededor de 50 clases, 10 interfaces, y 15 excepciones. Cada clase en el paquete tiene un propósito muy específico, y las clases están diseñadas para ser combinadas con otras para manejar una variedad de situaciones. 21/04/2011 Alex Montoya - SCJP 5 10
  • 11. Mini API de java.io Clase Clase Base Argumentos de los constructores principales Métodos Importantes File Object File, String createNewFile() String delete() String, String exists() isDirectory() isFile() list() mkdir() renameTo() FileWriter Writer File close() String flush() write() BufferedWriter Writer Writer close() flush() newLine() write() PrintWriter Writer File close() String flush() OutputStream printf() Writer println() write() FileReader Reader File read() String read() BufferedReader Reader Reader readLine() 21/04/2011 Alex Montoya - SCJP 5 11
  • 12. Decidiendo qué Clases Usar Ahora busquemos una mejor forma de escribir datos en un archivo y leer los datos nuevamente a memoria. Este es el proceso que clases necesitamos para escribir los datos: 21/04/2011 Alex Montoya - SCJP 5 12 Sabemos que queremos usar un objeto File. Así que cualquier otra clase debe tener un constructor que reciba un File. Buscamos un método que nos permita hacer esta tarea de forma más sencilla. Construimos el objeto de la clase necesaria y lo utilizamos
  • 13. Decidiendo qué Clases Usar (2) Por lo que el nuevo código puede quedar de la siguiente forma: File file = new File(“archivo.txt”); PrintWriter pw = new PrintWriter(file); fw.println(“saludos”); fw.println(“amigos”); 21/04/2011 Alex Montoya - SCJP 5 13
  • 14. Decidiendo qué Clases Usar (3) Para leer los datos hacemos lo mismo: File file = new File(“archivo.txt”); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String datos = br.readLine(); 21/04/2011 Alex Montoya - SCJP 5 14
  • 15. Trabajando con Archivos y Directorios Ya habíamos dicho que la clase File es usada para crear archivos y directorios. Además los métodos de File pueden ser usados para borrar directorios, renombrar archivos, saber si un archivo existe, crear archivos temporales, cambiar los atributos de un archivo, y diferenciar entre archivos y directorios. 21/04/2011 Alex Montoya - SCJP 5 15
  • 16. Trabajando con Archivos y Directorios (2) Además vimos que: File file = new File("foo"); Crea un nuevo objeto File, y puede hacer una de dos cosas: Si “foo” no existe, crea el archivo Si “foo” existe, el nuevo File refiere al archivo 21/04/2011 Alex Montoya - SCJP 5 16
  • 17. Trabajando con Archivos y Directorios (3) File file = new File(“foo”); NUNCA crea el arcivo. Hay dos formas de crearlo: Invocar el método createNewFile del objeto File 2. Crear un Reader o un Writer o un Stream. Específicamente, FileReader, FileWriter, PrintWriter, FileInputStream, o FileOutputStream. Cada vez que creamos una instancia de una de estas clases, creamos automáticamente un archivo, a menos que ya exista. 21/04/2011 Alex Montoya - SCJP 5 17
  • 18. Trabajando con Archivos y Directorios (4) Crear un directorio es similar a crear un archivo. Es un proceso de dos fases; primero creamos un objeto directorio (File); después creamos el directorio usando el método mkdir(). File directorio = new File(“dir”); directorio.mkdir(); Una vez que tenemos el directorio, ponemos archivos en el: File archivo = new File(directorio, “archivo.txt”); archivo.createNewFile(); 21/04/2011 Alex Montoya - SCJP 5 18
  • 19. Trabajando con Directorios Hay que tener cuidado cuando trabajamos con directorios. Como hemos visto, construir un Reader o un Writer crea de forma automática un archivo si no existe, pero esto no funciona con directorios: File directorio = new File(“dir”); File archivo = new File(directorio, “archivo.txt”); archivo.createNewFile(); 21/04/2011 Alex Montoya - SCJP 5 19
  • 20. Trabajando con Directorios (2) Un objeto File puede referir a un archivo o un directorio. Para verificar a qué refiere podemos usar los métodos isFile() isDirectory() 21/04/2011 Alex Montoya - SCJP 5 20
  • 21. Trabajando con Directorios (3) File dir = new File(“dir"); System.out.println(dir.isDirectory()); File archivo = new File(dir, “archivo.txt"); System.out.println (archivo.isFile()); FileReader fr = new FileReader(archivo); BufferedReader br = new BufferedReader(fr); String s; while( (s = br.readLine()) != null) System.out.printIn(s); 21/04/2011 Alex Montoya - SCJP 5 21
  • 22. Otros Métodos Útiles Además de crear archivos los métodos de la clase File nos permiten hacer cosas como renombrar archivos y derectorios, y borrar archivos y directorios con los métodos renameTo y delete respectivamente: File dir = new File(“dir”); File nuevo = new File(“otro”); dir.renameTo(nuevo); dir.delete(); 21/04/2011 Alex Montoya - SCJP 5 22
  • 23. Otros Métodos Útiles (2) Hay algunas cosas importantes que hay que saber sobre delete y renameTo: delete: No podemos borrar directorios que no estén vacíos renameTo: Debemos dar al objeto File existente un objeto nuevo File válido con el nombre que queramos. renameTo: Podemos renombrar un directorio aún si este no está vacio. 21/04/2011 Alex Montoya - SCJP 5 23
  • 24. ¿Alguna Pregunta? 21/04/2011 Alex Montoya - SCJP 5 24
  • 25. Gracias 21/04/2011 Alex - Programación Orientada a Aspectos 25 programadorjavablog@gmail.com http://javatutoriales.blogspot.com/ Java Tutoriales en Facebook