hola colega
esta libreria io la estoy usando con oracle como un java aqui le mando el EJEMPLO
ESE ES MI CODIGO
RECUERDA ATACHAR LOS 2 PAQUETES org.apache.oro Y org.apache.commons.
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.String;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.oro.text.awk.*;
public class SwGetDataFiles {
public static void main(String[] args) {
String v_error="";
String server = "ip_ftp"; //Direccion ip del ftp
String username = "user"; //usuario
String password = "pasword"; //pasword
String destinationFolder = "C:\\FOLDER_DONDE_C_BAJAN_LOS_ARCHIVOS\\"; //folder destino donde se copiaran los datos remotos
String folder = "/DIR_1/_DIR_34/"; //folder remoto donde se encuentran los datos a transferir
String folderBackup = "/DIR34/DIR_BACKUP/";
FTPClient ftp=null;
FTPClient ftp2=null;
try
{
// Connect and logon to FTP Server
ftp = new FTPClient();
ftp2 = new FTPClient();
ftp.connect(server,21);
ftp.login( username, password );
ftp.enterLocalPassiveMode();
ftp.setFileType(FTP.ASCII_FILE_TYPE); ///// s eañadio nuevo
ftp2.connect(server,21);
ftp2.login( username, password );
ftp2.enterLocalPassiveMode();
ftp2.setFileType(FTP.ASCII_FILE_TYPE); ///// s eañadio nuevo
System.out.println("Connected to " + server + ".");
System.out.print(ftp.getReplyString());
// List the files in the directory
System.out.println("cambiando de directorio DE AMBOS");
ftp.changeWorkingDirectory(folder);
ftp2.changeWorkingDirectory(folderBackup);
System.out.println("cambiando de directorio listo:"+ftp.printWorkingDirectory());
System.out.println("cambiando de directorio BACUP listo:"+ftp2.printWorkingDirectory());
FTPFile[] files=null;
files = ftp.listFiles(); // Obtiene los archivos del servidor y los mostramos
boolean status;
for( int i=0; i<files.length; i++ )
{
System.out.println(files[i].isFile());
if (files[i].isFile() ) {
System.out.println("Nombre del archivo "+files[i].getName());
// carga el archivo a copiar en el stream
InputStream ios = ftp.retrieveFileStream(files[i].getName());
// graba el archivo en el ftp de backup
status = ftp2.storeFile(files[i].getName(), ios);
System.out.println("put file-status:" +status);
boolean commandOK=ftp.completePendingCommand();
System.out.println("pending cmd complete-status egatedev:" +commandOK);
ios.close();
// verifica si lo movio como backup
// de se asi, lo descarga a a una carpeta local C://CarpetaLocal para procesarlo en la base de datos
if (commandOK)
{ System.out.println("comando ok = true, grabando en local");
File file = new File( destinationFolder + File.separator + files[ i ].getName().replace('-','_') );
FileOutputStream fos = new FileOutputStream( file );
// graba el archivo en la carpeta local
boolean copiadoOK = ftp.retrieveFile( files[ i ].getName(), fos );
fos.close();
// si lo copia en el servidor de backup
// lo elimina
System.out.println("copiadoOK: "+copiadoOK);
if (copiadoOK)
{ ftp.deleteFile(files[i].getName());}
}
};
}
System.out.println("ok");
ftp.logout();
ftp2.logout();
}
catch(IOException ioe) { v_error = "IOException error ftp: "+ioe.getMessage();
ioe.printStackTrace();}
catch( Exception e ) {v_error = "Exception error ftp: "+e.getMessage(); }
finally
{
if(ftp.isConnected())
{
try{
ftp.disconnect();
ftp2.disconnect();
}
catch(IOException ioe1) { v_error = "error de ftp, al desconexion:"+ioe1.getMessage();}
}
}
System.out.println(v_error);
}
}
ESE ERROR Q TE SALE AMI TAMBIEN ME SALE.... PERO AMI SI ME DESCARGA TODOS LOS ARCHIVOS
ESTE PROCESO IO LO UTILIZO CON UN JOB DE ORACLE Q SE EJECUTA CADA 3 MINUTOS
CUALQUIER COSA PUEDE PREGUNTARME
SLDS