¡Descarga POO Unidad 6 (Flujos y Archivos) y más Guías, Proyectos, Investigaciones en PDF de Programación Orientada a Objetos solo en Docsity!
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TIJUANA
SUBDIRECCIÓN ACADÉMICA DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN
SEMESTRE ENERO – JUNIO 2020
ING. EN SISTEMAS COMPUTACIONALES
PROGRAMACIÓN ORIENTADA A OBJETOS (AED-1286 SC2A)
UNIDAD VI : Flujos y Archivos
Alumno : 19211641 Flores Sandoval Diego Eduardo
MAESTRA: LUZ ELENA CORTEZ GALVÁN
ENTREGA : 26 de junio de 2020
ÍNDICE
- 6.1 Archivo
- ¿Qué es un archivo?
- Clasificaciones de archivos
- 6.2 Flujo
- ¿Qué es?.........................................................................................................................................
- Clasificaciones de flujos..................................................................................................................
- 6.3 - Operaciones en Archivos de Texto
- 6.4 Operaciones en Archivos Binarios
- BinaryWriter
- BinaryReader
- 6.5 Ejemplos
- Archivos de Texto
- Archivos Binarios
- Bibliografía
Escritura : Se utiliza la clase StreamWiter para todas las funciones de flujo de escritura. StreamWriter
está diseñado para la salida de caracteres en una codificación particular, mientras que las clases
derivadas de Stream están diseñadas para la entrada y salida de bytes.
StreamWriter usa de manera predeterminada una instancia de UTF8Encoding a menos que se
especifique lo contrario. Esta instancia de UTF8Encodingse construye sin una marca de orden de
bytes ( BOM ), por lo que su método GetPreamble devuelve una matriz de bytes vacía. La codificación
UTF - 8 predeterminada para este constructor genera una excepción en bytes no válidos. Este
comportamiento es diferente del comportamiento proporcionado por el objeto de codificación en
la propiedad Encoding.UTF8. Para especificar una lista de materiales y determinar si se genera una
excepción en bytes no válidos, utilice un constructor que acepte un objeto de codificación como
parámetro, como StreamWriter ( String , Boolean , Encoding ) o StreamWriter.
Lectura : Se utiliza la clase StreamReader para todas las funciones de flujo de escritura.
StreamReader está diseñado para la entrada de caracteres en una codificación particular, mientras
que la clase Stream está diseñada para la entrada y salida de bytes. Use StreamReader para leer
líneas de información de un archivo de texto estándar.
StreamReader usa de manera predeterminada la codificación UTF- 8 a menos que se especifique lo
contrario, en lugar de usar la página de códigos ANSI para el sistema actual. UTF- 8 maneja los
caracteres Unicode correctamente y proporciona resultados consistentes en versiones localizadas
del sistema operativo. Si obtiene la codificación de caracteres actual utilizando la propiedad
CurrentEncoding , el valor no es confiable hasta después del primer método de lectura, ya que la
detección automática de codificación no se realiza hasta la primera llamada a un método de lectura.
6.3- Operaciones en Archivos de Texto TextWriter
Close() : Cierra el sistema de escritura actual y libera todos los recursos del sistema asociados al
sistema de escritura.
CreateObjRef(Type): Crea un objeto que contiene toda la información relevante necesaria para
generar un proxy utilizado para comunicarse con un objeto remoto.(Heredado de
MarshalByRefObject)
Dispose(): Libera todos los recursos usados por el objeto TextWriter.
Dispose(Boolean): Libera los recursos no administrados utilizados por TextWriter y, opcionalmente,
libera también los recursos administrados.
DisposeAsync(): Libera de forma asincrónica todos los recursos que usa el objeto TextWriter.
Equals(Object): Determina si el objeto especificado es igual al objeto actual.(Heredado de Object)
Flush(): Borra todos los búferes del sistema de escritura actual y hace que todos los datos
almacenados en el búfer se escriban en el dispositivo subyacente.
FlushAsync(): Borra asincrónicamente todos los búferes del sistema de escritura actual y hace que
todos los datos almacenados en el búfer se escriban en el dispositivo subyacente.
GetHashCode(): Sirve como la función hash predeterminada.(Heredado de Object)
GetLifetimeService(): Recupera el objeto de servicio de duración actual que controla la directiva de
duración de esta instancia.(Heredado de MarshalByRefObject)
GetType(): Obtiene el Type de la instancia actual.(Heredado de Object)
InitializeLifetimeService(): Obtiene un objeto de servicio de duración para controlar la directiva de
duración de esta instancia.(Heredado de MarshalByRefObject)
MemberwiseClone(): Crea una copia superficial del Object actual.(Heredado de Object)
MemberwiseClone(Boolean): Crea una copia superficial del objeto MarshalByRefObject
actual.(Heredado de MarshalByRefObject)
Synchronized(TextWriter): Crea un contenedor seguro para subprocesos en torno al TextWriter
especificado.
ToString(): Devuelve una cadena que representa el objeto actual.(Heredado de Object)
Write(Boolean): Escribe la representación de texto de un valor Boolean en la secuencia de texto.
Write(Char): Escribe un carácter en la secuencia de texto.
Write(Char[]): Escribe una matriz de caracteres en la secuencia de texto.
Write(Char[], Int32, Int32): Escribe una submatriz de caracteres en la secuencia de texto.
Write(Decimal): Escribe la representación de texto de un valor decimal en la secuencia de texto.
Write(Double): Escribe la representación de texto de un punto flotante de 8 bytes en la secuencia
de texto.
Write(Int32): Escribe la representación de texto de un entero con signo de 4 bytes en la secuencia
de texto.
Write(Int64): Escribe la representación de texto de un entero con signo de 8 bytes en la secuencia
de texto.
Write(Object): Escribe la representación de texto de un objeto en la secuencia de texto mediante
una llamada al método ToString en ese objeto.
Write(ReadOnlySpan): Escribe un intervalo de caracteres en la secuencia de texto.
Write(Single): Escribe la representación de texto de un valor de punto flotante de 4 bytes en la
secuencia de texto.
Write(String): Escribe una cadena en la secuencia de texto.
WriteLine(Int32): Escribe la representación de texto de un entero con signo de 4 bytes seguida de
un terminador de línea en la secuencia de texto.
WriteLine(Int64): Escribe la representación de texto de un entero con signo de 8 bytes seguida de
un terminador de línea en la secuencia de texto.
WriteLine(Object): Escribe la representación de texto de un objeto mediante una llamada al método
ToString en ese objeto, seguida de un terminador de línea en la secuencia de texto.
WriteLine(ReadOnlySpan): Escribe la representación de texto de un intervalo de caracteres
seguida de un terminador de línea en la secuencia de texto.
WriteLine(Single): Escribe la representación de texto de un valor de punto flotante de 4 bytes
seguida de un terminador de línea en la secuencia de texto.
WriteLine(String): Escribe una cadena seguida de un terminador de línea en la secuencia de texto.
WriteLine(String, Object): Escribe una cadena con formato y una nueva línea en la secuencia de
texto con la misma semántica que el método Format(String, Object).
WriteLine(String, Object, Object): Escribe una cadena con formato y una nueva línea en la secuencia
de texto con la misma semántica que el método Format(String, Object, Object).
WriteLine(String, Object, Object, Object): Escribe una cadena con formato y una línea nueva en la
secuencia de texto con la misma semántica que Format(String, Object).
WriteLine(String, Object[]): Escribe una cadena con formato y una línea nueva en la secuencia de
texto con la misma semántica que Format(String, Object).
WriteLine(StringBuilder): Escribe la representación de texto de un generador de cadenas seguida
de un terminador de línea en la secuencia de texto.
WriteLine(UInt32): Escribe la representación de texto de un entero sin signo de 4 bytes seguida de
un terminador de línea en la secuencia de texto.
WriteLine(UInt64): Escribe la representación de texto de un entero sin signo de 8 bytes seguida de
un terminador de línea en la secuencia de texto.
WriteLineAsync(): Escribe un terminador de línea en la secuencia de texto de forma asincrónica.
WriteLineAsync(Char): Escribe un carácter seguido de un terminador de línea en la secuencia de
texto de forma asincrónica.
WriteLineAsync(Char[]): Escribe una matriz de caracteres seguida de un terminador de línea en la
secuencia de texto de forma asincrónica.
WriteLineAsync(Char[], Int32, Int32): Escribe una submatriz de caracteres seguida de un
terminador de línea en la secuencia de texto de forma asincrónica.
WriteLineAsync(ReadOnlyMemory, CancellationToken): Escribe la representación de texto
de una región de memoria de caracteres seguida de un terminador de línea en la secuencia de texto
de forma asincrónica.
WriteLineAsync(String): Escribe una cadena seguida de un terminador de línea en la secuencia de
texto de forma asincrónica.
WriteLineAsync(StringBuilder, CancellationToken): Escribe la representación de texto de un
generador de cadenas seguida de un terminador de línea en la secuencia de texto de forma
asincrónica.
TextReader
Close(): Cierra el TextReader y libera todos los recursos del sistema asociados a TextReader.
CreateObjRef(Type): Crea un objeto que contiene toda la información relevante necesaria para
generar un proxy utilizado para comunicarse con un objeto remoto.(Heredado de
MarshalByRefObject)
Dispose(): Libera todos los recursos usados por el objeto TextReader.
Dispose(Boolean): Libera los recursos no administrados utilizados por TextReader y,
opcionalmente, libera también los recursos administrados.
Equals(Object): Determina si el objeto especificado es igual al objeto actual.(Heredado de Object)
GetHashCode(): Sirve como la función hash predeterminada.(Heredado de Object)
GetLifetimeService(): Recupera el objeto de servicio de duración actual que controla la directiva
de duración de esta instancia.(Heredado de MarshalByRefObject)
GetType(): Obtiene el Type de la instancia actual.(Heredado de Object)
InitializeLifetimeService(): Obtiene un objeto de servicio de duración para controlar la directiva de
duración de esta instancia.(Heredado de MarshalByRefObject)
MemberwiseClone(): Crea una copia superficial del Object actual.(Heredado de Object)
MemberwiseClone(Boolean): Crea una copia superficial del objeto MarshalByRefObject
actual.(Heredado de MarshalByRefObject)
Peek(): Lee el siguiente carácter sin modificar el estado del sistema de lectura o el origen del
carácter. Devuelve el siguiente carácter disponible sin leerlo realmente del lector.
Read(): Lee el siguiente carácter en el lector de texto y hace avanzar la posición de los caracteres
en un carácter.
Read(Char[], Int32, Int32): Lee un número máximo de caracteres especificado en el lector actual y
escribe los datos en un búfer, comenzando en el índice especificado.
Read(Span): Lee los caracteres del lector actual y escribe los datos en el búfer especificado.
ReadAsync(Char[], Int32, Int32): Lee un número máximo de caracteres especificado en el lector de
texto actual de forma asincrónica y escribe los datos en un búfer, comenzando en el índice
especificado.
Seek(Int32, SeekOrigin): Establece la posición en el flujo actual.
ToString(): Devuelve una cadena que representa el objeto actual.(Heredado de Object)
Write(Boolean): Escribe un valor Boolean de un byte en la secuencia actual, que es 0 si es false y 1
si es true.
Write(Byte): Escribe un byte sin signo en la secuencia actual y avanza la posición de la secuencia
en un byte.
Write(Byte[]): Escribe una matriz de bytes en la secuencia subyacente.
Write(Byte[], Int32, Int32): Escribe una región de una matriz de bytes en la secuencia actual.
Write(Char): Escribe un carácter Unicode en la secuencia actual y avanza la posición actual de la
secuencia de acuerdo con el Encoding utilizado y los caracteres específicos escritos en la
secuencia.
Write(Char[]): Escribe una matriz de caracteres en la secuencia actual y avanza la posición actual
de la secuencia de acuerdo con el Encoding utilizado y los caracteres específicos escritos en esa
secuencia.
Write(Char[], Int32, Int32): Escribe una sección de una matriz de caracteres en la secuencia actual
y avanza la posición actual de la secuencia de acuerdo con el Encoding utilizado y quizás los
caracteres específicos que se escriben en la secuencia.
Write(Decimal): Escribe un valor decimal en la secuencia actual y avanza la posición de la
secuencia en dieciséis bytes.
Write(Double): Escribe un valor de punto flotante de ocho bytes en la secuencia actual y avanza la
posición de la secuencia en ocho bytes.
Write(Int16): Escribe un entero con signo de dos bytes en la secuencia actual y avanza la posición
de la secuencia en dos bytes.
Write(Int32): Escribe un entero con signo de cuatro bytes en la secuencia actual y avanza la
posición de la secuencia en cuatro bytes.
Write(Int64): Escribe un entero con signo de ocho bytes en la secuencia actual y avanza la posición
de la secuencia en ocho bytes.
Write(ReadOnlySpan): Escribe un intervalo de bytes en la secuencia actual.
Write(ReadOnlySpan): Escribe un intervalo de caracteres en la secuencia actual y avanza la
posición actual de la secuencia de acuerdo con el elemento Encoding utilizado y quizás los
caracteres específicos que se escriben en la secuencia.
Write(SByte): Escribe un byte con signo en la secuencia actual y avanza la posición de la secuencia
en un byte.
Write(Single): Escribe un valor de punto flotante de cuatro bytes en la secuencia actual y avanza la
posición de la secuencia en cuatro bytes.
Write(String): Escribe una cadena de longitud prefijada en esta secuencia en la codificación actual
de BinaryWriter y hace avanzar la posición actual de la secuencia de acuerdo con la codificación
utilizada y los caracteres específicos escritos en dicha secuencia.
Write(UInt16): Escribe un entero sin signo de dos bytes en la secuencia actual y avanza la posición
de la secuencia en dos bytes.
Write(UInt32): Escribe un entero sin signo de cuatro bytes en la secuencia actual y avanza la
posición de la secuencia en cuatro bytes.
Write(UInt64): Escribe un entero sin signo de ocho bytes en la secuencia actual y avanza la
posición de la secuencia en ocho bytes.
Write7BitEncodedInt(Int32): Escribe un entero de 32 bits en formato comprimido.
BinaryReader
Close(): Cierra el lector actual y la secuencia subyacente.
Dispose(): Libera todos los recursos usados por la instancia actual de la clase BinaryReader.
Equals(Object): Determina si el objeto especificado es igual al objeto actual.(Heredado de Object)
FillBuffer(Int32): Rellena el búfer interno con el número especificado de bytes leídos de la
secuencia.
GetHashCode(): Sirve como la función hash predeterminada.(Heredado de Object)
GetType(): Obtiene el Type de la instancia actual.(Heredado de Object)
MemberwiseClone(): Crea una copia superficial del Object actual.(Heredado de Object)
PeekChar(): Devuelve el siguiente carácter disponible y no hace avanzar la posición de bytes o
caracteres.
Read(): Lee los caracteres de la secuencia subyacente y hace avanzar la posición actual de la
secuencia de acuerdo con la Encoding usada y el carácter concreto que se lea de la secuencia.
Read7BitEncodedInt(): Lee un entero de 32 bits en formato comprimido.
ReadBoolean(): Lee un valor Boolean de la secuencia actual y hace avanzar un byte la posición
actual de la secuencia.
ReadByte(): Lee el siguiente byte de la secuencia actual y hace avanzar un byte la posición actual
de la secuencia.
ReadBytes(Int32): Lee el número especificado de bytes de la secuencia actual en una matriz de
bytes y hace avanzar la posición actual en función del número de bytes leídos.
ReadChar(): Lee el siguiente carácter de la secuencia actual y hace avanzar la posición actual de la
secuencia de acuerdo con la Encoding usada y el carácter concreto que se lee de la secuencia.
6.5 Ejemplos Archivos de Texto
Código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO;//<----Librería para manejo de archivos namespace ejemplo_ArchivoTexto { public class TextoCaracteres { //campos de la clase StreamWriter sw = null; //declaración flujo de escritura StreamReader sr = null; //declaración flujo de lectura string str; //método para crear el archivo public void CrearArchivo(string nomArchivo) { try { // Crea flujo de escritura hacia el archivo doc.txt, si el archivo existe sobreescribe su contenido. sw = new StreamWriter(nomArchivo); // Lee una línea de la entrada estándar Console.WriteLine("Escriba una línea de texto para introducir al archivo creado:"); str = Console.ReadLine(); // Se introduce la línea leída dentro del archivo creado sw.WriteLine(str); } catch (IOException es) { Console.WriteLine("Mensaje del Error: " + es.Message); Console.WriteLine("Ruta del Error: " + es.StackTrace); } finally { // Cierra el flujo. if (sw != null) sw.Close(); //Mensaje del finally Console.WriteLine("Bloque Finally siempre se ejecuta. Presiona enter para continuar..."); Console.ReadKey(); } } //método para leer el archivo public void LeerArchivo(string nomArchivo)
if (File.Exists(nomArchivo)) { try { // Crea flujo de lectura desde el archivo doc.txt sr = new StreamReader(nomArchivo); // Lectura de la línea del archivo str = sr.ReadLine(); Console.WriteLine(str); } catch (IOException le) { Console.WriteLine("Mensaje del Error: " + le.Message); Console.WriteLine("Ruta del Error: " + le.StackTrace); } finally { // Cierra el flujo if (sr != null) sr.Close(); //Mensaje del finally Console.WriteLine("Bloque Finally siempre se ejecuta. Presiona enter para continuar..."); Console.ReadKey(); } } else { Console.Write("Archivo no existente, presione "enter" para regresar..."); } } } class Program { static void Main(string[] args) { //Variables globales auxiliares char opc = 'x'; string nomArchivo = ""; //Creación de objeto TextoCaracteres tc = new TextoCaracteres(); do { Console.Clear(); Console.WriteLine("-----------MENÚ----------"); Console.Write("a) Crear Archivo.\nb) Leer el Archivo.\nc) Salir del programa\n\nSelecciona una opción escribiendo la letra: "); try { opc = Convert.ToChar(Console.ReadLine()); } catch (FormatException f) {
Salida (Creación de archivo):
Salida (Lectura de archivo):
Archivos Binarios
Código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; //<---- Librería para manejo de archivos namespace ejemplo_ArchivoBinario { class ArchivoBinario { //declaración de flujos BinaryWriter bw = null; //flujo salida - escritura de datos BinaryReader br = null; //flujo entrada - lectura de datos //campos de la clase string nombre, apellido; public void CrearArchivo(string nomArchivo) { try { //creación del flujo para escribir datos al archivo bw = new BinaryWriter(new FileStream(nomArchivo, FileMode.Create, FileAccess.Write)); //captura de datos Console.Clear(); Console.Write("Escribe tu nombre : "); nombre = Console.ReadLine(); Console.Write("Escribe tu apellido : "); apellido = Console.ReadLine(); bw.Write(nombre); bw.Write(apellido); } catch (IOException es) { Console.WriteLine("\nMensaje del Error : " + es.Message); Console.WriteLine("\nRuta del Error : " + es.StackTrace); } finally { if (bw != null) bw.Close(); //cierra flujo escritura Console.Write("Presione cualquier tecla para regresar al Menú."); Console.ReadKey(); } } public void MostrarArchivo(string nomArchivo) { try { //verifica si existe el archivo
catch (FormatException f) { Console.WriteLine("Error: {0}\nPresiona "enter" para reintentar...", f.Message); } switch (opc) { case 'a': case 'A': Console.Clear(); Console.Write("Escribe el nombre del archivo que se creará (con su respectiva extensión): "); nomArchivo = Console.ReadLine(); //Ejecución de método para creación de archivo tc.CrearArchivo(nomArchivo); break; case 'b': case 'B': Console.Clear(); Console.Write("Escribe el nombre del archivo que quieres leer (con su respectiva extensión): "); nomArchivo = Console.ReadLine(); //Ejecución de método para creación de archivo tc.MostrarArchivo(nomArchivo); break; case 'c': case 'C': Console.WriteLine("Presiona cualquier tecla para salir del programa..."); Console.ReadKey(); break; default: Console.Write("Opción no disponible(presiona "enter" para reintentar) "); Console.ReadKey(); break; } } while (opc != 'c' && opc != 'C'); } } }
Salida (Menú):
Salida (Creación de archivo):
Salida (Lectura de archivo):