LER ARQUIVO DE TEXTO GRANDE
é 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!
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!
A primeira coisa a ser entendida é: você está lendo um arquivo TEXTO, portanto o melhor objeto para ser usado é TextReader e não StreamReader.
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
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
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?
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?
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.
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.
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.
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
Abraços
Tópico encerrado , respostas não são mais permitidas