Transferir archivos de windows hacia linux con clase java
Hola a todos, alguno puede ayudarme con esto?
Lo que necesito es transferir archivos pdf de windows hacia linux con una clase java.
Alguna idea de como hacerlo?
Saludos
- Jeremias Rosales's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
socket / ftp
Si quieres hacerlo completamente con java, puedes utilizar sockets para transferencia de los archivos. También puedes apoyarte de un servidor FTP, la ventaja que tendrias es que cualquiera puede conectarse a tu repositorio de archivos (si le asignas privilegios) ya que hay bastantes clientes para este protocolo. Tambien puedes conectarte con java.
Hola
Puedes indicarme algun ejemplo de como hacerlo completamente con Java?
He leido un poco acerca de sockets; pero sinceramente no lo he logrado asimilar completamente.
Ejemplos de sockets
Despachate tu solo!
https://www.google.com.mx/search?q=empaquetado+zipjar&ie=utf-8&oe=utf-8&...
:)
Jajaja
Ok, gracias. De verdad te lo agradezco. :P
java.daba.do
Hola amigo, he investigado y conclui en esta clase:
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.SocketException;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
/**
*
* @author jeremiasr
*/
public class TransferirArchivoFtp {
final private static String ftpServidor = "servidor_ftp";
final private static String ftpUsuario = "usuario";
final private static String ftpClave = "clave";
public static void main(String args[]) {
FTPClient cteFtp = new FTPClient();
File filePdf = new File("ruta_completa_mas_archivo_pdf");
try {
cteFtp.connect(ftpServidor);
showServerReply(cteFtp);
int replyCode = cteFtp.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Connect failed");
return;
}
boolean conectar = cteFtp.login(ftpUsuario, ftpClave);
System.out.println(cteFtp.printWorkingDirectory());
//
System.out.println(filePdf.getCanonicalPath());
String[] command = {"chmod", "644", filePdf.getAbsolutePath(),};
Runtime.getRuntime().exec(command);
cteFtp.logout();
cteFtp.disconnect();
} catch (SocketException ex) {
Logger.getLogger(TransferirArchivoFtp.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TransferirArchivoFtp.class.getName()).log(Level.SEVERE, null, ex);
}
}
Entonces, genere este error, se que es, la ruta desde donde ejecuto la clase es windows entonces el directorio de trabajo, aunque ya este conectado al ftp sigue siendo windows para la clase. La pregunta es ¿Como le hago para que el directorio de trabajo sea el de unix cuando ya este conectado al ftp?
GRAVE: null
java.io.IOException: Cannot run program "chmod": CreateProcess error=2, El sistema no puede encontrar el archivo especificado
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:466)
at transfer.ftp.TransferirArchivoFtp.main(TransferirArchivoFtp.java:50)
Caused by: java.io.IOException: CreateProcess error=2, El sistema no puede encontrar el archivo especificado
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 3 more
BUILD SUCCESSFUL (total time: 0 seconds)
FTP
¿Como le hago para que el directorio de trabajo sea el de unix cuando ya este conectado al ftp?
Edité tu código de ejemplo. Una vez que descargues los archivos podrás darle el procesamiento que necesites.
FTPClient ftpClient = new FTPClient();
File filePdf = new File("ruta_completa_mas_archivo_pdf");
try {
ftpClient.connect(ftpServidor);
int replyCode = ftpClient.getReplyCode();
if (! (FTPReply.isPositiveCompletion(replyCode) && ftpClient.login(ftpUsuario, ftpClave))) {
System.out.println("Connect failed");
return;
}
// Si necesitas cambiar de directorio aqui es donde se define
ftpClient.changeWorkingDirectory("carpeta");
System.out.println(ftpClient.printWorkingDirectory());
FTPFile[] ftpFiles = ftpClient.listFiles();
for(FTPFile ftpFile : ftpFiles) {
if (ftpFile.isDirectory()) continue;
FileOutputStream output;
// Aqui es donde guardas el archivo en tu carpeta local
output = new FileOutputStream("/carpetalocal/" + ftpFile.getName());
ftpClient.retrieveFile(ftpFile.getName(), output);
output.close();
// Puedes renombrar el archivo que has bajado
//ftpClient.rename(ftpFile.getName(), "sync_" + ftpFile.getName());
// O si prefieres puedes eliminarlo
//ftpClient.deleteFile(ftpFile.getName());
}
// ... Ahora que tienes los archivos en tu carpeta local puedes hacer lo que quieras con ellos
ftpClient.logout();
ftpClient.disconnect();
} catch (SocketException ex) {
Logger.getLogger(TransferirArchivoFtp.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TransferirArchivoFtp.class.getName()).log(Level.SEVERE, null, ex);
}
}
No funcionó
Hola, tratte de varias formas de hecharlo andar; pero no me funciono. Entonces me decidi a guardar el pdf en la base de datos, lo cual ya logre.. ahora tengo este problema... lo explico en el Deploy Java Application usando jar/Folder