• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

karva

[VB.Net 2005] Problema com My.Computer.FileSystem.ReadAllText

3 mensagens neste tópico

Boas, tenho este pedaço de código:

Dim file As String
    Private Sub AbrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AbrirToolStripMenuItem.Click
        openFD.Title = "Localize o ficheiro que quer abrir"
        openFD.Filter = "Todos os ficheiros|*.*|Ficheiros de texto|*.txt"
        If openFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim strFileName As String
            strFileName = openFD.FileName
            file = strFileName
        End If

        txt.Text = ""
        If file <> "" Then
            txt.Text = My.Computer.FileSystem.ReadAllText(file)
        End If
    End Sub

Mas quando o faço, às vezes a caixa de texto fica com todo o conteudo do ficheiro, mas às vezes não. O que está mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nunca fiz dessa forma para ler o conteudo de um ficheiro... experimenta usar o seguinte:

Dim sr as StreamReader = new StreamReader(file)
txt.Text = sr.ReadToEnd()

Não esquecer de importar o System.IO

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para quem tiver a mesma dúvida, tive a ajudar o karva por irc e descobri onde estava o problema.

Ao ler o conteúdo de um ficheiro executável, ficamos com uma stream deste tipo:

M Z Nothing Nothing [ Nothing Nothing Nothing ] (etc.)

Se tentássemos metê-la numa textbox, esta só mostraria a parte "MZ" pois encontraria um Nothing à frente que faria com que parasse de ler a stream que lhe tinha sido dada através da propriedade Text da Textbox.

Uma das soluções que encontrei foi ler a stream do ficheiro com um ByteReader e guardar os resultados numa array de Bytes. Conseguido isso, Poderíamos usar um ciclo para adicionar, um a um, cada byte do array como caracter. Não sei se é da própria linguagem ou se terá a ver com a minha abordagem ao problema mas este método consome muito tempo (cerca de 5 mins para um ficheiro .dll de 40kb), no entanto, permite mostrar todo o conteúdo do ficheiro, como o Notepad o faz  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora