Boa tarde estou utilizando o commons-net-1.4.1.jar com o codigo abaixo, esta funcionando perfeitamente.
Gostaria de saber se tem como colocar uma barra ou percentual de progresso
vlw
package br.com.ftp.util;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPClient;
public class FTPUtils {
public FTPClient estabeleceConexao(String servidor, String usuario, String senha) {
FTPClient ftp = new FTPClient();
try {
ftp.connect(servidor);
// verifica se conectou com sucesso!
if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
ftp.login(usuario, senha);
return ftp;
} else {
// erro ao se conectar
ftp.disconnect();
System.out.println("Conexão recusada");
ftp = null;
}
} catch (Exception e) {
System.out.println("Ocorreu um erro: " + e);
}
return ftp;
}
public static boolean transfereArqFTP(String servidor, String usuario, String senha, List<File> listaArquivos, String diretorio) {
String nomeArquivo = null;
FTPClient ftp = new FTPClient();
try {
ftp.connect(servidor);
// verifica se conectou com sucesso!
if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
if (!ftp.login(usuario, senha)) {
ftp.disconnect();
System.out.println("Login recusado");
return false;
}
} else {
// erro ao se conectar
ftp.disconnect();
System.out.println("Conexão recusada");
return false;
}
String dir = "";
for (int i = 0; i < diretorio.length(); i++) {
if (!diretorio.substring(i, i + 1).equals("\\")) {
dir += diretorio.substring(i, i + 1);
} else {
if (!ftp.changeWorkingDirectory(dir.trim())) {
ftp.disconnect();
System.out.println("Diretório de envio informado inexistente");
return false;
} else {
dir = "";
}
}
}
if (!ftp.changeWorkingDirectory(dir.trim())) {
ftp.disconnect();
System.out.println("Diretório de envio informado inexistente");
return false;
}
// para cada arquivo informado...
for (Iterator iter = listaArquivos.iterator(); iter.hasNext();) {
File arquivo = (File) iter.next();
// abre um stream com o arquivo a ser enviado
InputStream is = new FileInputStream(arquivo);
// pega apenas o nome do arquivo
int idx = arquivo.getName().lastIndexOf(File.separator);
if (idx < 0){
idx = 0;
} else {
idx++;
}
nomeArquivo = arquivo.getName();
// ajusta o tipo do arquivo a ser enviado
if (arquivo.getName().endsWith(".txt")) {
ftp.setFileType(FTPClient.ASCII_FILE_TYPE);
} else if (arquivo.getName().endsWith(".jpg")) {
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
} else {
ftp.setFileType(FTPClient.ASCII_FILE_TYPE);
}
System.out.println("Enviando arquivo " + nomeArquivo + "...");
// faz o envio do arquivo
if (!ftp.storeFile(nomeArquivo, is)) {
ftp.disconnect();
System.out.println("Não foi possível enviar o arquivo " + nomeArquivo + "...");
return false;
} else {
System.out.println("Arquivo " + nomeArquivo + " enviado com sucesso!");
}
}
ftp.disconnect();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} catch (Throwable e) {
e.printStackTrace();
return false;
}
}
public static boolean getArquivosFTP(String servidor, String usuario, String senha, String dirRetorno, String diretorioRecebimento) {
try {
FTPClient ftp = new FTPClient();
ftp.connect(servidor);
// verifica se conectou com sucesso!
if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
if (!ftp.login(usuario, senha)) {
ftp.disconnect();
System.out.println("Login recusado");
return false;
}
} else {
// erro ao se conectar
ftp.disconnect();
System.out.println("Conexão recusada");
ftp = null;
}
String dir = "";
for (int i = 0; i < dirRetorno.length(); i++) {
if (!dirRetorno.substring(i, i + 1).equals("\\")) {
dir += dirRetorno.substring(i, i + 1);
} else {
if (!ftp.changeWorkingDirectory(dir.trim())) {
ftp.disconnect();
System.out.println("Diretório de recebimento informado inexistente");
return false;
} else {
dir = "";
}
}
}
if (!ftp.changeWorkingDirectory(dir.trim())) {
ftp.disconnect();
System.out.println("Diretório de recebimento informado inexistente");
return false;
}
FTPFile[] files = ftp.listFiles();
for (int i = 2; i < files.length; i++) {
if (files[i].getName().endsWith(".txt")) {
ftp.setFileType(FTPClient.ASCII_FILE_TYPE);
} else if (files[i].getName().endsWith(".jpg")) {
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
} else {
ftp.setFileType(FTPClient.ASCII_FILE_TYPE);
}
if (files[i].getName().startsWith("requisicao") || files[i].getName().startsWith("fornecedor") || files[i].getName().startsWith("pedido")) {
File file = new File(diretorioRecebimento + "\\" + files[i].getName());
OutputStream os = new FileOutputStream(file);
if (!ftp.retrieveFile(files[i].getName(), os)) {
System.out.println("Não foi possível trasnferir o arquivo " + files[i].getName() + "...");
} else {
System.out.println("Arquivo " + files[i].getName() + " trasnferido com sucesso!");
}
}
}
ftp.disconnect();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
package br.com.ftp;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import br.com.ftp.util.FTPUtils;
public class FTP {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("Digite o diretorio destino");
String diretorioDestino = sc.next();
List<File> listaArquivos = new ArrayList<File>();
System.out.println("Digite o arquivo");
String arquivo = sc.next();
File file = new File(arquivo);
if (file.isFile()){
listaArquivos.add(file);
}
if(FTPUtils.transfereArqFTP("endereco do ftp", "usuario", "senha", listaArquivos, diretorioDestino)){
System.out.println("Tranferencia feita com sucesso.");
} else {
System.out.println("Houve problema na tranferencia.");
}
} catch (Exception e) {
System.out.println("Ocorreram problemas ao executar.");
}
}
}