CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Duda con StreamReader: Concepto, alguien me explica?
(1/1)
Jimbenit:
Hola compañeros de solocodigo
En esta ocasión me gustaria que alguien me explicará el porque del siguiente error, lo solucioné pero aun no se la explicación.
Lo que quiero hacer es escribir unos lineas de texto en un archivo de txt, esto se hace asi:
--- Código: vb.net ---Imports SystemImports System.IO Module Module1 Sub Main() Dim FS As FileStream Dim SW As StreamWriter Dim STR As String Try 'crear un flujo hacie el ficher txt FS = New FileStream("d:doc.txt", FileMode.Append, FileAccess.Write) SW = New StreamWriter(FS) Console.WriteLine("Escriba una linea y pulse enter, para terminar solo pulse enter") STR = Console.ReadLine While STR <> Nothing 'escribe la linea en el fichero SW.WriteLine(STR) 'siguiente linea STR = Console.ReadLine End While Catch ex As IOException Console.WriteLine("Error : " & ex.Message) Finally If (Not SW Is Nothing) Then SW.Close() End Try End Sub End Module
el codigo anterior funciona bien, ahora miren el siguiente codigo:
--- Código: vb.net ---Imports SystemImports System.IO Module Module1 Sub Main() Dim FS As FileStream Dim SW As StreamWriter Dim STR As String Try 'crear un flujo hacie el ficher txt FS = New FileStream("d:doc.txt", FileMode.Append, FileAccess.Write) SW = New StreamWriter(FS) Console.WriteLine("Escriba una linea y pulse enter, para terminar solo pulse enter") STR = Console.ReadLine While STR <> Nothing 'escribe la linea en el fichero SW.WriteLine(STR) 'siguiente linea STR = Console.ReadLine End While Catch ex As IOException Console.WriteLine("Error : " & ex.Message) 'Finally <== suprimida ' If (Not SW Is Nothing) Then SW.Close() <== y esta tambien la quite End Try End Sub End Module
quite dos lineas que sirven para cerrar el flujo de la clase streamwriter, se supone que el VB debe cerrar este flujo en caso de que yo no lo haga, pero tal parece que no y como resultado, las lineas de texto no se escriben.
¿Hay alguna explicación del porque sucede esto?
saludos.
Newtek:
Jimbenit.
Lamento que haya durado tanto para contestar.
Lo que puedo observar es que lo que quitastes es el Finally del Catch.
Te cuento que el Finally siempre es ejecutada... tengas o no tengas una excepcion. En otras palabras antes de que lo quitaras el ejecutaba esa parte del codigo y por eso es que ahora te funciona.
Una cosa que tienes que tomar en cuenta es que el Finally esta al mismo nivel del Try o del Catch y no dentro del Catch.
Bueno avisame si hay algo mas en lo que te puedo ayudar.
Newtek
Web Hosting, Design, Development & SEO at Newtek Web Hosting
Navegación
Ir a la versión completa