Eu trabalho com FTP + Java usando a commons-net.
[code]
public IntegratorFTP() throws FTPException
{
ftp = new FTPClient();
try
{
ftp.connect("ip do ftp");
}
catch(IOException ex)
{
throw new FTPException("Não foi possível conectar-se ao FTP.");
}
if( FTPReply.isPositiveCompletion(ftp.getReplyCode()) )
{
try
{
ftp.login("usuario", "senha");
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
}
catch(IOException ex)
{
throw new FTPException("Não foi possível logar-se ao FTP.");
}
}
else
{
throw new FTPException("Não foi possível conectar-se ao FTP.");
}
}[/code]
Tenho essa classe IntegratorFTP para manipular as pastas do FTP. Exemplo: Quando quero criar um usuario novo, faço as configurações automáticas no FTP, já até usei para atualizar o código no servidor. É util…
Só não consegui trabalhar muito bem com endereços relativos, então para eu não me perder nas pastas do FTP tenho um método para sempre voltar para o raiz:
No caso minha raiz tem a pasta appservers. Então eu sei que estou no raiz…
[code]private void voltarParaODiretorioRaiz() throws FTPException
{
while(!estouNoRaiz)
{
try
{
ftp.changeToParentDirectory();
FTPFile[] arquivos = ftp.listFiles();
for(FTPFile arquivo : arquivos)
{
if(arquivo.getName().equals("appservers"))
{
estouNoRaiz = true;
}
}
}
catch(IOException ex)
{
throw new FTPException("Não foi possível voltar ao diretório raiz.");
}
}
}[/code]
Tenho este método para abrir um determinado caminho no FTP:
[code]
private void abrirPasta(String caminho) throws FTPException
{
if(!estouNoRaiz)
voltarParaODiretorioRaiz();
try
{
ftp.changeWorkingDirectory(caminho);
estouNoRaiz = false;
}
catch(IOException ex)
{
throw new FTPException("Erro ao abrir pasta de destino = " + caminho);
}
}[/code]
Para enviar um arquivo para o FTP:
[code]public void enviarArquivoe(File arquivo) throws FTPException
{
abrirPasta(“caminho ate a pasta que quero jogar o arquivo…”);
FileInputStream is = null;
try
{
is = new FileInputStream(arquivo);
} catch (FileNotFoundException e) {
throw new FTPException("Erro localizar o arquivo " + arquivo.getName());
}
try
{
if( !ftp.storeFile(arquivo.getName(), is) )
throw new FTPException("Erro ao enviar arquivo: " + arquivo.getName() + " para o servidor.");
}
catch(IOException ex)
{
throw new FTPException("Erro ao enviar arquivo: " + arquivo.getName() + " para o servidor.");
}
}[/code]
Se tiver alguma dúvida posta ai …