10 de febrero de 2012

StreamReader y StreamWriter 2/2


Para leer un archivo de texto, usare un textbox para mostrar la ruta del archivo de texto, un botón para buscar la ruta del archivo y un RichTextBox para mostrar el contenido del archivo.


Código para leer archivo de texto VB

Imports System.IO
Imports System.Data.SqlClient
Public Class Form1
    Dim archivo As New OpenFileDialog()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.ReadOnly = True
        archivo.InitialDirectory = "c:\\"
        archivo.Filter = "Archivos de Texto |*.txt"
        archivo.Title = "Abrir archivo de texto"
        archivo.Multiselect = False
        archivo.RestoreDirectory = True
    End Sub

    Private Sub BExaminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BExaminar.Click
        If archivo.ShowDialog = Windows.Forms.DialogResult.OK Then
            TextBox1.Text = archivo.FileName
            Dim objReader As System.IO.StreamReader
            objReader = File.OpenText(archivo.FileName)
            RichTextBox1.Text = objReader.ReadToEnd
        End If
    End Sub



Función para leer archivo de texto VB
pero si quieren utilizar una función para ponerla en una clase o modulo, entonces aquí esta:


Public Function leer_texto(ByVal ruta As String, _
       Optional ByRef Error As String = "") As String

    Dim strContents As String
    Dim objReader As StreamReader
    Try

        objReader = New StreamReader(ruta)
        strContents = objReader.ReadToEnd()
        objReader.Close()
        Return strContents
    Catch Ex As Exception
        Error = Ex.Message
    End Try
End Function



Código para crear un archivo de texto VB

lo creo conteniendo la información de una base de datos, para eso necesito crear una consulta con su respectivo dataSet, para eso agregar un botón al formulario llamado Button1 y  al darse el evento Click llama a la función generadora del archivo de texto:

Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs)
        GeneraArchivo()
    End Sub



Private Sub GeneraArchivo()
        'Variables para abrir el archivo en modo de escritura
        Dim strStreamW As Stream
        Dim strStreamWriter As StreamWriter
        Dim sql As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=imagenes;Integrated Security=True")
        Dim sentencia As String = "select * from img"
        Dim da As SqlDataAdapter
        Try
            sql.Open()
            Dim ds As New DataSet

            Dim FilePath As String = "C:\nombreArchivo.txt"

            'Se abre el archivo y si este no existe se crea
            strStreamW = File.OpenWrite(FilePath)
            strStreamWriter = New StreamWriter(strStreamW, _
            System.Text.Encoding.UTF8)

            da = New SqlDataAdapter(sentencia, sql)
            da.Fill(ds)

            Dim dr As DataRow
            Dim Nombre As String = ""
            Dim comentarios As String = ""
            Dim ruta As String = ""

            For Each dr In ds.Tables(0).Rows
                Nombre = CStr(dr("nombre"))
                comentarios = CStr(dr("comentarios"))
                ruta = CStr(dr("ruta"))

                'Escribimos la línea en el achivo de texto
                strStreamWriter.WriteLine(Nombre & " , " & comentarios & " , " & ruta)

            Next

            strStreamWriter.Close()
            sql.Close()

            MsgBox("El archivo se generó con éxito")

        Catch ex As Exception
            strStreamWriter.Close()
            MsgBox(ex.Message)
        End Try
    End Sub



Función para crear archivo de texto VB
pero si quieren utilizar una función para ponerla en una clase o modulo, entonces aquí esta:

Public Function SaveTextToFile(ByVal info As String, _
 ByVal ruta As String, _
   Optional ByVal Error As String = "") As Boolean

    Dim Contents As String
    Dim bAns As Boolean = False
    Dim objReader As StreamWriter
    Try


        objReader = New StreamWriter(ruta)
        objReader.Write(info)
        objReader.Close()
        bAns = True
    Catch Ex As Exception
        Error = Ex.Message

    End Try
    Return bAns
End Function



Código para leer archivo de texto C#

private void Botton_Click(object sender, EventArgs e)
{
OpenFileDialog abrir = new OpenFileDialog();
abrir.Filter= "Archivos de texto (*.*) | *.*";

if (abrir.ShowDialog() == DialogResult.OK)
{
this.Text = abrir.FileName; //abrimos el archivo

RichTextBox1.LoadFile(abrir.FileName,RichTextBoxStreamType.PlainText);
}
}