como descobrir o tamanho de um arquivo texto
como faço para descobrir o tamanho (em byte) de um arquivo texto?
Pestana_
Curtidas 0
Respostas
Marcosrocha
02/04/2009
Não estou com o Delphi aqui, mas é algo mais ou menos do tipo:
with TFileStream.Create(´C:\Windows\explorer.exe´, fmOpenRead or fmShareExclusive) do try Edit1.Text := IntToStr(Size); finally Free; end;
GOSTEI 0
Pestana_
02/04/2009
Primeiramente muito obrigado por responder Marcos!
eu estava olhando este comando no help do Delphi, mas eu não entendi uma coisa, o sistema carrega o arquivo na memoria? digo isso porque eu preciso saber somente qual é tamanho do arquivo em bytes, sem carregar na memoria, algo do tipo acessando diretamente o arquivo.
Atenciosamente,
Pestana.
eu estava olhando este comando no help do Delphi, mas eu não entendi uma coisa, o sistema carrega o arquivo na memoria? digo isso porque eu preciso saber somente qual é tamanho do arquivo em bytes, sem carregar na memoria, algo do tipo acessando diretamente o arquivo.
Atenciosamente,
Pestana.
GOSTEI 0
Lehapan
02/04/2009
Cara Pestana_
verifique se é isto que você quer.
espero ter ajudado
verifique se é isto que você quer.
procedure TForm1.Button1Click(Sender: TObject); var f: file of Byte; size: Longint; begin if OpenDialog1.Execute then begin AssignFile(f, OpenDialog1.FileName); Reset(f); try size := FileSize(f); Showmessage( ´File size in bytes: ´ + IntToStr(size) ); finally CloseFile(f); end; end; end;
espero ter ajudado
GOSTEI 0
Marcosrocha
02/04/2009
o sistema carrega o arquivo na memoria? digo isso porque eu preciso saber somente qual é tamanho do arquivo em bytes, sem carregar na memoria, algo do tipo acessando diretamente o arquivo.
Bastava você ter feito um teste com um arquivo grande para saber.Não, o código não carrega inteiro para a memória. Ele abre o arquivo colocando na estrutura TFileStream todos os dados sobre o arquivo e posicionando o ponteiro de dados na posição 0, ou seja, se você quiser ´ler´ o arquivo, teria mais coisa a fazer.
A título de informação, executo essa rotina em arquivos com mais de 400Mb e pegar o tamanho do arquivo não demora nem 1 milisegundo.
GOSTEI 0
Pestana_
02/04/2009
[quote:ef3c115a95=´Pestana_´]o sistema carrega o arquivo na memoria? digo isso porque eu preciso saber somente qual é tamanho do arquivo em bytes, sem carregar na memoria, algo do tipo acessando diretamente o arquivo.
Bastava você ter feito um teste com um arquivo grande para saber.Não, o código não carrega inteiro para a memória. Ele abre o arquivo colocando na estrutura TFileStream todos os dados sobre o arquivo e posicionando o ponteiro de dados na posição 0, ou seja, se você quiser ´ler´ o arquivo, teria mais coisa a fazer.
A título de informação, executo essa rotina em arquivos com mais de 400Mb e pegar o tamanho do arquivo não demora nem 1 milisegundo.[/quote:ef3c115a95]
Marcos você tem razão é isso mesmo, resolveu meu problema, muito obrigado pela ajuda!
GOSTEI 0
Pestana_
02/04/2009
Cara Pestana_
verifique se é isto que você quer.
espero ter ajudado
procedure TForm1.Button1Click(Sender: TObject); var f: file of Byte; size: Longint; begin if OpenDialog1.Execute then begin AssignFile(f, OpenDialog1.FileName); Reset(f); try size := FileSize(f); Showmessage( ´File size in bytes: ´ + IntToStr(size) ); finally CloseFile(f); end; end; end;
lehapan muito obrigado pela ajuda, a sua solução tambem resolve o problema, só uma dúvida o AssignFile tambem é parecido TFileStream ele não carrega o arquivo para a memoria, ele somente associa com o arquivo, é isso mesmo?
GOSTEI 0
Pestana_
02/04/2009
não querendo incomodar, estou tentando entender qual a diferença do AssignFile e do TFileStream?
pelo que eu entendi, os dois aceita qualquer tipo de arquivo e abre e escreve no arquivo externo, é isso mesmo ou estou enganado? então qual a diferença?
Obrigado mais uma vez!
Pestana.
pelo que eu entendi, os dois aceita qualquer tipo de arquivo e abre e escreve no arquivo externo, é isso mesmo ou estou enganado? então qual a diferença?
Obrigado mais uma vez!
Pestana.
GOSTEI 0