Analisando tamanho de arquivo

Tenho uma duvida a respeito de tamanho de arquivo. Fiz um software para impressao de documentos, ele fica verificando de tempos em tempos uma pasta compartilhada, para quando um arquivo entrar na pasta ele seja mandado para impressora e depois mover o arquivo para uma pasta de “impressos”.

Porém, como ela é compartilhada tenho o medo de que, quando o arquivo começar a ser enviado, o software ja mande-o para a impressao antes de completar a transferencia.

Estou pensando em analisar os bytes com uma thread. Se ele analisar o tamanho do arquivo e o tamanho Y for igual ao tamanho X que foi o tamanho anterior a leitura, ele imprime. Senão ele joga o valor de Y(atual) para o X(que será o valor anterior na proxima analise) e depois de um tempo analisa novamente.

porem mesmo dando este tempo, fica falho pois pode dar alguma travada na rede, ele analisar guardar o valor e analisar novamente e os valores serem iguais.

Então pensando nisso irei analisar o tamanho do arquivo em ultimo caso, alguem tem uma solução melhor?

Desde já agradeço.

eu gravaria o arquivo com um nome padrão não aceito pelo método que envia para a impressora, ao final de receber os bytes eu renomearia o arquivo deixando-o disponivel para impressão.

Esqueci de falar sobre isso. Eu precisaria de um software antes de chegar na pasta para isso. O problema também é o seguinte, eu preciso de que quando ele imprimir o arquivo ele jogue na pasta de impressos com o mesmo nome, para ter um “controle”

depois de enviado para a impressora basta mover o arquivo para a outra pasta.

entao… dai preciso do nome REAL do arquivo nao um nome padrão. Ele precisa ir para a pasta com o nome que ele veio.

Não tem como identificar se ele esta ainda em transferencia ou algo do genero?

[quote=denisspitfire]entao… dai preciso do nome REAL do arquivo nao um nome padrão. Ele precisa ir para a pasta com o nome que ele veio.

Não tem como identificar se ele esta ainda em transferencia ou algo do genero?[/quote]

acho que não me entendeu.

1 - copie o arquivo com um nome parão não aceito pelo método que envia para a impressora.
2 - no final de ler os bytes do arquivo(depois que receber ele) renomeie para o nome original.
3 - neste ponto ele estara pronto para ser impresso.
4 - mande para a impressora, e pós mova o arquivo para onde vc quer.

digamos que tenha no cabeçalho ou na propriedade do arquivo o tamanho dele COMO ELE FICARÁ, e ver o tamanho dele agora…
uma flag sei la qualquer coisa que eu compare ele agora com oque ele tem que ser. se for igual imprime

dai eu teria que ter uma outra aplicação que pegue o arquivo e coloque em um nome padrão.pdf para que quando a outra aplicação veja o arquivo ignore, quando ele terminar renomear para o nome anterior… Mas ai eu preciso fazer essa aplicação e o usuario precisa utiliza-la para transferir o arquivo. E não simplesmente jogar os arquivos na pasta.

velinho tem varias formas de fazer, vc ja tem o tamanho do arquivo em bytes antes mesmo de gravar em disco, pode controlar isto, na real acho que é mais simples do que imagina.

mas o .length mostra o tamanho atual ou o tamanho do arquivo como ele vai ficar?

se esta lendo mostra o tamanho até o momento da leitura, se ja tem o arquivo mostra o tamho total.

blz. Escutei aqui que quando ainda esta em transferencia o proprio sistema operacional segura essa aplicação para nao fazer nada com ela… é real isso? estou testando aqui com um arquivo enorme para ver se faz isso mesmo

não lembro, só testando.

acredito que ele lance uma IOException… (pois o arquivo esta sendo usado, no caso transferido)

e ai você tem que tratar essa exception

EOFException? resolve o problema? só achei a exception uma aplicação disso esta dificil de entender.

testando com arquivos grandes 4gb+ ele não ta dando nenhuma exception ?