Upload
kayrambal
View
442
Download
2
Tags:
Embed Size (px)
Citation preview
Leyendo y Escribiendo Archivos
Jonathan Aldave MendozaPerú
Jairo Alberto Contreras BarragánMicrosoft Student Partner - Colombia
Agenda
•Clases File y Directory•Enumeraciones FileAccess y FileMode
Manejando archivos y directorios
•Clase StreamFile•Facilitando tareas de Lectura y Escritura
Lectura y Escritura de Archivos
•Uso de la memoria•Aplicando Búferes
Mas allá de los archivos físicos
Antes de comenzar
Stream
FileStream MemoryStream BufferedStream …
QUE ES UN STREAM?
static void leerStream(Stream stream) { stream.Position = 0;
while (stream.Position != stream.Length) { Console.Write(stream.ReadByte()); } }
Antes de comenzar
Manejando archivos y directorios
File Class
Directory Class
- Abrir y Crear archivos- Operaciones de escritura y lectura de archivos- Al crear o abrir un archivo, retorno diferentes clases de objetos
- Ofrece la funcionalidad necesario para interactuar con directorios- Crear y eliminar directorios- Consultar el estado del directorio.
Manejando archivos y directoriosstatic void Main(string[] args)
{ string ruta = @"E:\Jairo\Documents\sample.txt";
Console.WriteLine("El archivo existe?: {0}", File.Exists(ruta)); Console.WriteLine("Fecha de creación: {0}", File.GetCreationTime(ruta)); Console.WriteLine("Fecha última de consulta: {0}", File.GetLastAccessTime(ruta)); Console.WriteLine("Fecha última modificación: {0}", File.GetLastWriteTime(ruta));
ruta = @"E:\Jairo\Documents"; Console.WriteLine("El directorio existe?: {0}", Directory.Exists(ruta)); Console.WriteLine("Archivos de la carpeta Documents:\n");
string[] archivos = Directory.GetFiles(ruta); foreach(string name in archivos) Console.WriteLine("- {0}",name);
Console.WriteLine("\n\nDirectorios dentro de la carpeta Documents:\n"); string[] directorios = Directory.GetDirectories(ruta); foreach(string name in directorios) Console.WriteLine("- {0}", name); Console.ReadKey(); }
Manejando archivos y directorios
Abrir, Leer y Escribir en archivos
FileAccess- Read- Write- ReadWrite
FileMode- Append- Create- CreateNew- OpenOrCreate- Truncate
class Program { static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; FileStream archivo1 = File.OpenRead(ruta);
string cadenaTexto = "Hola latinoamerica!!!"; byte[] bytes = Encoding.ASCII.GetBytes(cadenaTexto); int no_bytes = bytes.Length; archivo1.Write(bytes, 0, no_bytes); } }
Abrir, Leer y Escribir en archivos
FileAccess- Read- Write- ReadWrite
FileMode- Append- Create- CreateNew- OpenOrCreate- Truncate
class Program { static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; FileStream archivo1 = File.OpenWrite(ruta);
string cadenaTexto = "Hola latinoamerica!!!"; byte[] bytes = Encoding.ASCII.GetBytes(cadenaTexto); int no_bytes = bytes.Length; archivo1.Write(bytes, 0, no_bytes); } }
Abrir, Leer y Escribir en archivos
FileAccess- Read- Write
- ReadWrite
FileMode- Append- Create- CreateNew-
OpenOrCreate- Truncate
static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; FileStream archivo1; archivo1 = File.Open(ruta,FileMode.OpenOrCreate,FileAccess.Write); string cadenaTexto = "Hola latinoamerica!!!"; byte[] bytes = Encoding.ASCII.GetBytes(cadenaTexto); int no_bytes = bytes.Length; archivo1.Write(bytes, 0, no_bytes); }
Abrir, Leer y Escribir en archivos
FileAccess- Read- Write
- ReadWrite
FileMode- Append- Create- CreateNew-
OpenOrCreate- Truncate
static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; FileStream archivo1; archivo1 = File.Open(ruta,FileMode.OpenOrCreate,FileAccess.Write); string cadenaTexto = "Hola latinoamerica!!!"; byte[] bytes = Encoding.ASCII.GetBytes(cadenaTexto); int no_bytes = bytes.Length; archivo1.Write(bytes, 0, no_bytes); }
La clase FileStream provee la funcionalidad básica para abrir archivos
de escritura o lectura.
static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; FileStream archivo1; archivo1 = File.Open(ruta,FileMode.OpenOrCreate,FileAccess.Write); string cadenaTexto = "Hola latinoamerica!!!"; byte[] bytes = Encoding.ASCII.GetBytes(cadenaTexto); int no_bytes = bytes.Length; archivo1.Write(bytes, 0, no_bytes); }
La clase FileStream provee la funcionalidad básica para abrir archivos
de escritura o lectura.
Lectura de archivos de texto
Escritura de archivos de texto
StreamReader
StreamWriter
static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; FileStream archivo1; archivo1 = File.Open(ruta,FileMode.OpenOrCreate,FileAccess.Write); string cadenaTexto = "Hola latinoamerica!!!"; StreamWriter sw = new StreamWriter(archivo1); sw.Write(cadenaTexto); sw.Close(); archivo1.Close(); }
static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; FileStream archivo1; archivo1 = File.Open(ruta,FileMode.OpenOrCreate,FileAccess.Write); string cadenaTexto = "Hola latinoamerica!!!"; byte[] bytes = Encoding.ASCII.GetBytes(cadenaTexto); int no_bytes = bytes.Length; archivo1.Write(bytes, 0, no_bytes); }
Mejorando la lectura y escritura
Mas allá de los archivos físicos
Usando la memoria
Volátil
Eficiente
Usando la memoria
VENTAJAS Lectura eficiente Escritura eficiente Facilidad para persistir
CONSIDERACIONES En principio no hay persistencia Contiene un buffer interno para mayor eficiencia
MemoryStream
Método Descripción
ToWrite Escribe el contenido completo de esta secuencia de memoria en otra secuencia.
Flush Se sobrecarga para volverlo inválido
MemoryStream
Demo
Recuperando una imagen de una base de datos
Aumentando la eficiencia
Qué es un búfer
• ?
Ventajas Consideraciones
Aumentando la eficiencia
Qué es un búfer
•Check
Ventajas
• ?
Consideraciones
Aumentando la eficiencia
Qué es un búfer
•Check
Ventajas
•Check
Consideraciones
• ?
Aumentando la eficiencia
Qué es un búfer
•Check
Ventajas
•Check
Consideraciones
• Check
Aumentando la eficiencia
BufferedStream
using System;using System.Text;using System.IO;
class Program { static void Main(string[] args) { string ruta = @"E:\Jairo\Documents\sample.txt"; Stream fs = File.OpenRead(ruta);
BufferedStream bufer = new BufferedStream(fs); byte[] bytes = new byte[128];
bufer.Read(bytes, 0, 128); Console.WriteLine("Resultado de lectura: " + Encoding.ASCII.GetString(bytes)); Console.ReadLine(); } }
Preguntas?
Hoy viste:Leyendo y Escribiendo Archivos
MUCHAS GRACIASJonathan…Microsoft Student Partner – Colombia
Jairo Alberto Contreras BarragánMicrosoft Student Partner - Colombia