LER ARQUIVO DE TEXTO GRANDE
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
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
1- Qual o tamanho desse arquivo texto?
2- Poste toda a rotina envolvida, não somente a parte que lê o arquivo texto.
2- Poste toda a rotina envolvida, não somente a parte que lê o arquivo texto.
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
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
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.
e com faço para trabalhar com string de tamanhos realmentes grandes?
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?
Pergunta: Onde você pretende jogar esse texto?
é o DUMP do mysql.
leio o arquivo e executo no MySqlScript.execute
leio o arquivo e executo no MySqlScript.execute
e ler linha a linha não resolveria?
resolve, Nicksoft, mas é lento, o MySqlScript.execute me permite executar blocos inteiros, isso torna o processo bem mais rápido!
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....
já tive q ler arquivo de mais de Gb nessa condição....
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 encerrado , respostas não são mais permitidas