Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: juni85 en 28 Octubre 2011, 11:47 AM

Título: Como se lee un archivo en un ftp
Publicado por: juni85 en 28 Octubre 2011, 11:47 AM
Me gustaria leer un archivo que tengo en un servidor ftp la esta:
¿Como hago la conexión?

¿Puede ser que para leerlo y  modificarlo tenga que descargarlo en local?

--os pongo lo que he realizado
Código (java) [Seleccionar]


public class Ftp {

     public static String visualizarFichero = "";

    try
    {
           URL url = new URL("ftp://" + user + ":" + pass + "@" + server + localPath);
           URLConnection urlc = url.openConnection();
         
               
                FileReader fr = new FileReader(localPath);
                BufferedReader bf = new BufferedReader(fr);
                String complete = "";
                String line = bf.readLine();

                while (line != null)
                {
                    complete += line + "\n";
                    line = bf.readLine();
                }

                visualizarFichero = complete;
                bf.close();
                fr.close();
                System.out.println("--- "+visualizarFichero);
               
     } catch (Exception ex)
     {
        ex.printStackTrace();
        System.out.println(ex.getMessage());

    }

}

}

Título: Re: Como se lee un archivo en un ftp
Publicado por: adastra en 28 Octubre 2011, 12:58 PM
Utiliza la clase sun.net.ftp.FtpClient por ejemplo:

Código (java) [Seleccionar]

import java.io.IOException;

import sun.net.ftp.FtpClient;

public class FtpConnectionDemo {
 public static int BUFFER_SIZE = 10240;

 private FtpClient m_client;

 private String host = "";

 private String user = "";

 private String password = "";

 private String sDir = "";

 public FtpConnectionDemo() {
   try {
     System.out.println("Connecting to host " + host);
     m_client = new FtpClient(host);
     m_client.login(user, password);
     System.out.println("User " + user + " login OK");
     System.out.println(m_client.welcomeMsg);
     m_client.cd(sDir);
     System.out.println("Directory: " + sDir);
     m_client.binary();
     System.out.println("Success.");
   } catch (Exception ex) {
     System.out.println("Error: " + ex.toString());
   }
 }
 protected void disconnect() {
   if (m_client != null) {
     try {
       m_client.closeServer();
     } catch (IOException ex) {
     }
     m_client = null;
   }
 }
}          


Siempre que necesito realizar una conexión por FTP utilizo dicha clase.

referencia: http://www.java2s.com/Code/Java/Network-Protocol/Establishftpconnection.htm
Título: Re: Como se lee un archivo en un ftp
Publicado por: juni85 en 28 Octubre 2011, 17:14 PM
El codigo me da error en      m_client = new FtpClient(host);
Estoy usando netbeans
Otra cosa aparte de hacer la conexión como hago para leer??
Título: Re: Como se lee un archivo en un ftp ??
Publicado por: juni85 en 28 Octubre 2011, 18:21 PM
He creado la conexión de la sigueinte manera
ahora como hago para leer el contenido de un fichero ?
//en localPath pongo por ejemplo /fichero1.txt

Antes de empezar me he descargado la siguiente libreria
http://apache.rediris.es//commons/net/binaries/commons-net-3.0.1-bin.zip


import org.apache.commons.net.ftp.FTPClient;

Código (java) [Seleccionar]

public class Ftp
{

     public static String visualizarFichero = "";
     public static boolean login;
     public static FTPClient client = new FTPClient();


public static void leerFicheroFTP(String server, String user, String pass, String localPath)
{
    try
         
    {

          client.connect(server);
          login = client.login(user,pass);

    } catch (IOException ex)
          {
                ex.printStackTrace();
                System.out.println(ex.getMessage());
          }

      if (login == true)
       {
            try
            {
                FileReader fr = new FileReader(localPath);
                BufferedReader bf = new BufferedReader(fr);
                String complete = "";
                String line = bf.readLine();

                while (line != null)
                {
                    complete += line + "\n";
                    line = bf.readLine();
                }
                visualizarFichero = complete;
                bf.close();
                fr.close();
                System.out.println("--- "+visualizarFichero);
                client.logout();
                client.disconnect();

             }catch(IOException ex)
                {
                    ex.printStackTrace();
                    System.out.println(ex.getMessage());
                }
           
    }

}
}





Título: Re: Como se lee un archivo en un ftp
Publicado por: adastra en 28 Octubre 2011, 18:50 PM
Usa el objeto "client" para recuperar información sobre el servidor FTP, en cualquiera de los casos puedes consultar los métodos que te facilita dicho objeto y ver que información te resulta útil.
Título: Re: Como se lee un archivo en un ftp
Publicado por: juni85 en 28 Octubre 2011, 18:57 PM
Disculpame pero no me enterado de nada
Título: Re: Como se lee un archivo en un ftp
Publicado por: adastra en 29 Octubre 2011, 01:06 AM
la instancia del objeto FTPClient (client) tiene una serie de métodos que te permiten acceder información del servidor FTP (a lo que tengas permisos) estas librerias y métodos, en cualquier lenguaje de programación se llama API.
Mira este enlace, donde te indica todos los métodos disponibles en la clase FTPClient

http://commons.apache.org/net/apidocs/org/apache/commons/net/ftp/FTPClient.html

Allí veras más ejemplos y una extensa implementación de métodos... así que, a leer!