Ola pessoal. Estou listando a classe abaixo que realiza um FTP. Eu passo os parametros para a classe (java nome_da_classe host usuario senha arquivo diretorio (ascii | binary) (active | pasv) ) e ela executa normalmente baixando para a maquina local os arquivos especificados. Logicamente o main() recebe os 7 parametros que passei. Ao executar a classe novamente com os mesmos parametros (java nome_da_classe host usuario senha arquivo diretorio (ascii | binary) (active | pasv) ) ai vem a surpresa: ao ler o args[] no main() nao existem mais 7 parametros e sim os 7 + os nomes dos arquivos baixados para a maquina local. E o pior eh que os parametros originais sao deslocados para o final do array. Por exemplo, eu chamo a classe com os seguintes parametros:
“java FTPClientTest 172.17.5.5 anonimo teste *.txt arq/ ascii active”
Ao executar, no metodo main(), sao recuperados os 7 parametros do args[] -
args[0] = “172.17.5.5”;
args[1] = “anonimo”;
args[2] = “teste”;
args[3] = “*.txt”;
args[4] = “arq/”;
args[5] = “ascii”;
args[6] = “active”;
- e os arquivos escolhidos sao baixados. Vamos supor que baixou-se dois arquivos: teste1.txt e teste2.txt.Ao executar novamente com os mesmos parametros -
“java FTPClientTest 172.17.5.5 anonimo teste *.txt arq/ ascii active” -
o conteudo do args[] vai ser o seguinte:
args[0] = “172.17.5.5”;
args[1] = “anonimo”;
args[2] = “teste”;
args[3] = “teste1.txt”;
args[4] = “teste2.txt”;
args[5] = “arq/”;
args[6] = “ascii”;
args[7] = “active”;
Com isso o erro ocorre devido ao posicionamento dos parametros. Alguem pode me ajudar?? Aguardo uma resposta.
import java.io.IOException;
import java.io.*;
public class FTPClientTest {
public static void main(String args[]) {
tentarFTP(args);
System.exit(0);
}
public static void tentarFTP(String args[]){
try {
String host = args[0];
String usuario = args[1];
String senha = args[2];
String arquivo = args[3];
String diretorio = args[4];
String modoTransf = args[5];
String modoCon = args[6];
// Conecta e testa host na porta 21
FTPClient ftp = new FTPClient(host, 21);
ftp.login(usuario, senha);
ftp.sair();
ftp = new FTPClient(host);
ftp.debugarRespostas(true);
ftp.login(usuario, senha);
if (modoTransf.equalsIgnoreCase("BINARY")) {
ftp.setarTipo(FTPTransferType.BINARY);
}else if (modoTransf.equalsIgnoreCase("ASCII")) {
ftp.setarTipo(FTPTransferType.ASCII);
} else {
System.out.println("Tipo de transferencia desconhecido: " + modoTransf);
System.exit(-1);
}
if (modoCon.equalsIgnoreCase("PASV")) {
ftp.setarModoCon(FTPConnectMode.PASV);
} else if (modoCon.equalsIgnoreCase("ACTIVE")) {
ftp.setarModoCon(FTPConnectMode.ACTIVE);
} else {
System.out.println("Modo de conexao desconhecido: " + modoCon);
System.exit(-1);
}
// metodo que entra no diretorio especificado
// com o comando cwd
ftp.escolherDiretorio(diretorio);
String[] listando;
// lista o arquivo passado como parametro
listando = ftp.listar(arquivo);
// faz um loop para pegar buscar os arquivos
for (int cont = 0 ; cont < listando.length; cont++){
arquivo = listando[cont];
System.out.println(arquivo);
// metodo que realiza download do arquivo passado
// como parametro. Este metodo cria o comando de
// busca do arquivo via FTP, monta um buffer de
// escrita e vai criando o arquivo na maquina local
ftp.buscarArquivo(arquivo, arquivo);
ftp.setarTipo(FTPTransferType.ASCII);
}
arquivo = null;
ftp.sair();
} catch (IOException ex) {
System.out.println("Excecao capturada: " + ex.getMessage());
} catch (FTPException ex) {
System.out.println("Excecao capturada: " + ex.getMessage());
}
}
}