LER ARQUIVO DE TEXTO GRANDE

 Tópico anterior Próximo tópico Novo tópico

LER ARQUIVO DE TEXTO GRANDE

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#449879 - 12/08/2015 18:30:09

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


       olá amigos,

preciso ler um arquivo de texto, em alguns casos, tenho erro de estouro de  memoria "Exceção do tipo 'System.OutOfMemoryException' foi acionada."  uso o código abaixo:
            Dim fluxoTexto As IO.StreamReader
            fluxoTexto = New IO.StreamReader(nomeArq, System.Text.Encoding.Default)
            Dim stext As String = fluxoTexto.ReadToEnd

alguém sabe de algum modo de ler ( de forma rápida)   arquivos grandes de texto?

desde já agradeço







Resposta escolhida #449880 - 12/08/2015 18:39:56

JABA
CABO FRIO
Cadast. em:Agosto/2005


1- Qual o tamanho desse arquivo texto?

2- Poste toda a rotina envolvida, não somente a parte que lê o arquivo texto.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#449881 - 12/08/2015 19:28:43

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


oi Jaba,

1- tamanho do arquivo de texto   atual  300Mb pode subir
2  código:
    Public Function lerArquivo(nomeArq As String) As String
        Try
            If IO.File.Exists(nomeArq) = False Then Return ""
            Dim fluxoTexto As IO.StreamReader
            fluxoTexto = New IO.StreamReader(nomeArq, System.Text.Encoding.Default)
                Dim stext As String = fluxoTexto.ReadToEnd
                fluxoTexto.Close()
                Return stext
        Catch ex As Exception
            Trata_Erro(ex)
            Return ""
        Finally
        End Try
    End Function



#449884 - 12/08/2015 20:40:59

JABA
CABO FRIO
Cadast. em:Agosto/2005


MAXCIM, acredito que o seu problema está no tamanho máximo que uma string pode receber. Se não me engano, o limite é 2 ^ 31 para sistemas 32 bits, que fica em torno de 2147483648 caracteres.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#449885 - 12/08/2015 20:49:24

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


e com faço para trabalhar com string de tamanhos realmentes grandes?



#449886 - 12/08/2015 21:06:50

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 12/08/2015 21:08:42 por JABA

A ideia é mais ou menos assim: Você vai ter que ler esses dados por pedaços, aí quando ocorrer o estouro de memoria, guarda a posição do ponteiro no arquivo. Após isso, use o texto que já está na string para o que você pretende, depois libere essa string e cria uma nova para ler a partir da posição que deu erro.

Pergunta: Onde você pretende jogar esse texto?

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#449887 - 12/08/2015 21:19:19

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


é o  DUMP do mysql.
leio  o arquivo e  executo no MySqlScript.execute



#449917 - 13/08/2015 13:11:39

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


e ler linha a linha não resolveria?



#449919 - 13/08/2015 13:15:26

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


resolve, Nicksoft, mas é lento, o MySqlScript.execute me permite executar blocos inteiros, isso torna o processo bem mais rápido!



#449941 - 13/08/2015 17:05:09

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


mas se não da suporte ao arquivo completo, vai te obrigar a algo assim...
já tive q ler arquivo de mais de Gb nessa condição....



#450016 - 15/08/2015 10:01:35

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


Nick, tem que haver um modo de ler o bloco,  o  loaddump do mysql  é extremamente rápido  para subir esse arquivo, o tempo que ele leva para restaurar eu nem li 1/4 das linhas do arquivo. isso mostra que que no código dele  , o bloco é tratado inteiramente.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por MAXCIM em 20/10/2015 09:00:34