FTP com JAVA
Olá amigos!
Acompanhando meus outros posts é possível identificar que uso um servidor Mikrotik em minha rede. Este, por sua vez, roda todos os dias o famosos script de backup. Todavia, o backup fica salvo no HD do servidor. Existem scripts para efetuar o envio desse Backup por e-mail. Eu mesmo usava um desses. Só que com o tempo, o backup foi ficando grande e hoje, por exemplo, já corresponde a um arquivo de 13MB. Enviar e receber isso por e-mail todos os dias não estava ficando muito prático, nem lógico, visto que como estou na mesma rede que este Servidor, poderia obter o arquivo diretamente dele. Então, comecei a abrir o Mk todos os dias, copiar o arquivo e colá-lo em meu notebook. Já facilitou bastante, mas quis automatizar e então resolvi fazer uma pequena classe em Java para conectar no Mk via FTP e copiar o arquivo automaticamente. Bom, abaixo está a classe para quem quiser fazer algo parecido ou só precisar se conectar a um FTP com o Java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
public class FTPConnect {
public static void main (String[] args) throws SocketException,
IOException{
FTPClient ftp = new FTPClient();
//Fazendo a conexão
ftp.connect ("ip_do_ftp" );
//Efetuando o Login
ftp.login( "login", "password" );
//Mundando o diretório de trabalho
ftp.changeWorkingDirectory ("/");
//Adiquirindo o nome dos arquivos / diretórios existentes
String[] arq = ftp.listNames();
System.out.println ("Listando arquivos: \n");
for (String f : arq){
System.out.println(f);
}
//Fazendo o download do arquivo
FileOutputStream fos = new FileOutputStream( "/diretorio_de_destino/nome_do_arquivo" );
if (ftp.retrieveFile( "nome_do_arquivo", fos ))
System.out.println("Download efetuado com sucesso!");
else
System.out.println ("Erro ao efetuar download do arquivo.");
ftp.logout();
ftp.disconnect();
}
}
Quem quiser fazer um upload, pode usar as linhas abaixo:
//Fazendo o upload do arquivo
FileInputStream arqEnviar = new FileInputStream ("/diretorio_de_destino/nome_do_arquivo");
if (ftp.storeFile ("nome_do_arquivo", arqEnviar))
System.out.println("Arquivo armazenado com sucesso!");
else
System.out.println ("Erro ao armazenar o arquivo.");
Boa sorte a todos!
ótimo post, mas estou com problema o firewall esta bloqueando.
ResponderExcluirPode me ajudar?