Pessoal,
Estou desenvolvendo uma aplicação utilizando quartz que vai em um servidor e verifica se existe um arquivo, se existir a aplicação baixa o arquivo.
Esse processo ocorre a cada 20minutos a partir de 1hr da madrugada até as 4hrs.
Supondo que quando for 1:20 eu encontre o arquivo e baixe ele, mas o sistema do outro lado que estava escrevendo ainda não terminou, então, eu baixei um arquivo incompleto.
A última linha do arquivo é padrão. Então verificar se esse linha existe é uma opção. Mas não consegui fazer isso com stream.
Alguém tem alguma luz…
Segue o código.
Valeu.
import sun.net.ftp.FtpClient;
...
FtpClient client = new FtpClient();
try {
System.out.println("Abrindo conexão FTP");
String server = "xx.xxx.xx.x";
client.openServer(server);
client.login(user, passwd);
client.binary();
System.out.println(client.welcomeMsg);
File dir = new File("\\temp\\ccta");
dir.mkdir();
for (int i = 0 ; i < EMPRESAS.length ; i++) {
String filename = "zbnbhr004_EPRV_20101105.txt";
//String filename = PREFIXO_NOME_ARQUIVO + EMPRESAS[i] + "_" +dataAtual + ".txt";
try {
InputStream is = client.get(filename);
BufferedInputStream bis = new BufferedInputStream(is);
File fl = new File(dir, filename);
if(!fl.exists()) {
OutputStream os = new FileOutputStream(fl);
BufferedOutputStream bos = new BufferedOutputStream(os);
byte[] buffer = new byte[1024];
int readCount;
System.out.println("Getting: " + filename);
while( (readCount = bis.read(buffer)) > 0) {
bos.write(buffer, 0, readCount);
}
bos.flush();
bos.close();
}
}
}catch(FileNotFoundException fle) {
System.out.println("Arquivo não encontrado. Nova tentativa em 10 minutos.");
fle.printStackTrace();
}