Boa noite,
Estou apanhando ao tentar fazer download de um arquivo jar, alguem tem alguma sugestão.
CtrlFtp ctl = new CtrlFtp();
// "/downloads/rt.jar" --- caminho ftp
// "/rt.jar" --- caminho local
ctl.BaixarArquivo("/downloads/rt.jar", "/rt.jar");
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package atualizador.controllers;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import seguranca.controllers.EncriptaSenha;
/**
*
* @author tiagokochenborger
*/
public class CtrlFtp {
private EncriptaSenha cript = new EncriptaSenha();
java.util.ResourceBundle dadoFtp = java.util.ResourceBundle.getBundle("atualizador.resources/dadosFTP"); // NOI18N
private FTPClient ftp = new FTPClient();
String nomeArquivo = null;
private void ConectaFtp()
{
try {
ftp.connect( dadoFtp.getString("ftp") );
//verifica se conectou com sucesso!
if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {
ftp.login( cript.descripta(dadoFtp.getString("usuario")), cript.descripta(dadoFtp.getString("senha")));
} else {
//erro ao se conectar
ftp.disconnect();
System.out.println("Conexão recusada");
System.exit(1);
}
} catch (SocketException ex) {
Logger.getLogger(CtrlFtp.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(CtrlFtp.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void tipoArquivo(String caminhoNome)
{
String v[] = caminhoNome.split("\\.");
String ext=v[1];
try {
if(ext.equals("txt"))
{
ftp.setFileTransferMode(org.apache.commons.net.ftp.FTP.ASCII_FILE_TYPE);
ftp.setFileType( FTPClient.ASCII_FILE_TYPE );
}
else if (ext.equals("jar"))
{
ftp.setFileTransferMode(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
}
} catch (IOException ex) {
Logger.getLogger(CtrlFtp.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void DesconectaFtp()
{
try {
ftp.logout();
ftp.disconnect();
} catch (IOException ex) {
Logger.getLogger(CtrlFtp.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void EnviaArquivo(InputStream is)
{
try {
//faz o envio do arquivo
ftp.storeFile( nomeArquivo, is );
System.out.println("Arquivo "+nomeArquivo+" enviado com sucesso!");
} catch (IOException ex) {
Logger.getLogger(CtrlFtp.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void BaixarArquivo(String arquivoFile, String caminhoNome)
{
ConectaFtp();
boolean success=false;
OutputStream outputStream1 = null;
tipoArquivo(caminhoNome);
String remoteFile = arquivoFile;
File downloadFile = new File(caminhoNome);
try {
if(dadoFtp.getString("tipo").equals("noStream"))
{
// APPROACH #1: using retrieveFile(String, OutputStream)
outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile));
success = ftp.retrieveFile(remoteFile, outputStream1);
System.out.println(success);
if (success) {
System.out.println("File #1 has been downloaded successfully.");
}
outputStream1.close();
}
else
{
OutputStream outputStream2 = new BufferedOutputStream(new FileOutputStream(downloadFile));
InputStream inputStream = ftp.retrieveFileStream(remoteFile);
byte[] bytesArray = new byte[40096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(bytesArray)) != -1) {
outputStream2.write(bytesArray, 0, bytesRead);
}
success = ftp.completePendingCommand();
if (success) {
System.out.println("File #2 has been downloaded successfully.");
}
outputStream2.close();
inputStream.close();
}
} catch (IOException ex) {
Logger.getLogger(CtrlFtp.class.getName()).log(Level.SEVERE, null, ex);
}
DesconectaFtp();
}
}