LER ARQUIVO DE TEXTO GRANDE

DS2T 15/08/2015 18:23:14
#450047
é como o JABA falou.
Vai lendo o arquivo até chegar ao armazenamento máximo da variável. Execute o que foi lido (lembrando que irá tratar os dados de modo a não parar no meio de uma instrução, pois iria gerar erro). E depois continue nesse processo até ler todo o arquivo.

E claro, é um processo que consome bastante memória. Por isso, em alguns casos... deve-se estipular um limite menor do que a taxa de armazenamento permitido pela variável.

Abraços!
KERPLUNK 15/08/2015 22:12:05
#450060
A primeira coisa a ser entendida é: você está lendo um arquivo TEXTO, portanto o melhor objeto para ser usado é TextReader e não StreamReader.
MAXCIM 16/08/2015 21:51:51
#450090
Oi kerplunk, pesquisei o textreader , mas ainda daerro de [Ô]Exceção do tipo [ô]System.OutOfMemoryException[ô] foi acionada.[Ô]


Public Function lerArquivo4(filename As String) As Object
Try
Dim SB As New StringBuilder
Using reader As TextReader = File.OpenText(filename)
SB.Append(reader.ReadToEnd)

End Using
Return SB
Catch ex As Exception
Trata_Erro(ex)
End Try
End Function

também testei o código de exemplo desse link mas sem sucesso

https://msdn.microsoft.com/en-us/library/system.io.textreader(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
KERPLUNK 17/08/2015 00:43:22
#450100
Perguntas:
1 - Você precisa que todo o conteúdo do arquivo esteja em uma única string?
2 - Uma List<string> contendo todas as linhas do arquivo não seria suficiente?
JABA 17/08/2015 02:07:50
#450102
Citação:

2 - Uma List<string> contendo todas as linhas do arquivo não seria suficiente?



Kerplunk, um List possui o tamanho máximo de 2147483647 registros. Não sei se ainda conseguiria suportar o arquivo dele, mas acho que vale a tentativa.
MAXCIM 17/08/2015 07:41:02
#450104
o ideal seria ler o bloco inteiro, o SCRYTEXECUTE do mysql permite executar o arquivo inteiro, isso daria maior performance, já que não preciso ler linha a linha. identificar fim dos comandos , e nem ficar listando e percorrendo list.

usei por muito tempo o linha a linha, quando comecei a usar a execução do bloco. tornou-se muito mais rápido.
funciona bem, com arquivos de até 180 mb.

deve ter algo que permita ler e armazenar em memoria arquivos grandes.
LAMPIAO 17/08/2015 09:35:09
#450110
Olá MAXCIM, talvez o MemoryMappedFileAccess resolva o seu problema, não testei a implementação dele, mas ele aperece como uma possível solução pra ler arquivos com mais de 1GB. De uma olhada nesses links aqui MemoryMappedFileAccess, e nesse aqui How to read a large (1 GB) txt file in .NET?

Abraços
Página 2 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas