Как дать адрес FTP в Java? - PullRequest
       31

Как дать адрес FTP в Java?

1 голос
/ 30 декабря 2010

Я написал код, который загружает файл с FTP-сервера.Так как у меня локальный FTP-сервер, и я хочу получить доступ как «ftp: // localhost / alfresco».Это был FTP на свежем воздухе.

У меня есть следующий код

public class FtpTransfer {
public static final void main(String[] args)
{
    FTPClient ftp = new FTPClient();
    FileOutputStream br = null;
    try
    {
        ftp.connect("ftp://localhost/alfresco");
        ftp.login("admin", "admin");
        String file = "KPUB//Admin//TMM//Pickup//TMM_TO_ARTESIA_06152010220246.xml";

        br = new FileOutputStream("file");
        ftp.retrieveFile("/"+file, br);
        System.out.println("Downloaded...");
    }
    catch(IOException exception) {
        System.out.println("Error : "+exception);
    }
}
}

Возникает следующее исключение.

Error : java.net.UnknownHostException: ftp://localhost/alfresco

Пожалуйста, дайте мне знать, как мне дать адрес хоста FTP?

Ответы [ 4 ]

3 голосов
/ 30 декабря 2010
FTPClient f = new FTPClient();
f.connect("localhost");
f.login(username, password);
FTPFile[] files = listFiles(directory);   

См. Также

2 голосов
/ 30 декабря 2010

Вот пример, демонстрирующий подключение к серверу, изменение текущего рабочего каталога, перечисление файлов в каталоге и загрузка файла в некоторый указанный каталог.

package test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;

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

public class FtpTransfer {
 public static final void main(String[] args) throws SocketException, IOException {
  FTPClient ftp = new FTPClient();
  ftp.connect("ftp.somedomain.com"); // or "localhost" in your case
  System.out.println("login: "+ftp.login("username", "pass"));

  ftp.changeWorkingDirectory("folder/subfolder/");
  // list the files of the current directory
  FTPFile[] files = ftp.listFiles();  
  System.out.println("Listed "+files.length+" files.");
  for(FTPFile file : files) {
   System.out.println(file.getName());
  }
   // lets pretend there is a JPEG image in the present folder that we want to copy to the desktop (on a windows machine)
  ftp.setFileType(FTPClient.BINARY_FILE_TYPE); // don't forget to change to binary mode! or you will have a scrambled image!
        FileOutputStream br = new FileOutputStream("C:\\Documents and Settings\\casonkl\\Desktop\\my_downloaded_image_new_name.jpg");

  ftp.retrieveFile("name_of_image_on_server.jpg", br);
  ftp.disconnect();

 }
}
2 голосов
/ 30 декабря 2010

Попробуйте удалить протокол ("ftp: //") из вашего URL.

И, пожалуйста, посмотрите на пример .

1 голос
/ 30 декабря 2010

Метод FTPClient.connect() принимает имя сервера, а не URL. Попробуйте:

ftp.connect("localhost");

Также вам может понадобиться поместить alfresco в другое место. Если это часть пути к файлу,

String file = "alfresco/KPUB//Admin//TMM//Pickup//TMM_TO_ARTESIA_06152010220246.xml";
...