java ftp - 从服务器上的来宾帐户下载,无需登录名或密码

时间:2015-10-22 17:31:15

标签: java download ftp

我正在尝试从服务器下载文件。服务器有一个没有登录名或密码的访客帐户。

代码改编自http://www.dreamincode.net/forums/topic/32031-ftp-in-java-using-apache-commons-net。回复代码为220,表示“为新用户提供服务”,但下载文件的大小为0字节。服务器上文件的大小为845字节。

感谢您的时间。

import java.io.File;
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.FTPReply;

public class FtpTest {
  public static FTPClient ftp = new FTPClient();

  public static void main(String []args) throws IOException{
  String ftpStr = "ftp.ncbi.nih.gov";
  String path = "ftp.ncbi.nih.gov/genomes/MapView/Mus_musculus/non_sequence/README";

    try {
                  ftp.connect(ftpStr);
              } catch (SocketException ex) {
                  ex.printStackTrace();
              } catch (IOException ex) {
                  ex.printStackTrace();
              }
    int reply = ftp.getReplyCode();
    System.out.println(reply); //Output: 220

    System.out.println("Connected");

    File file = new File("README");
    FileOutputStream dfile = new FileOutputStream(file);

    ftp.retrieveFile(path,dfile);
    ftp.disconnect();

    System.out.println("Finished");
  }

}

2 个答案:

答案 0 :(得分:1)

要使用来宾帐户(没有用户名或密码)访问FTP服务器,应使用用户名anonymous和空密码。

答案 1 :(得分:0)

我知道这已经晚了两年,但我遇到了同样的问题。变量remote in:public boolean retrieveFile(String remote, OutputStream local) throws IOException 需要文件名,而不是文件的完整地址。所以你应该传递“README”而不是路径。在此之前,您应该将ftp客户端的工作目录更改为“genomes / MapView / Mus_musculus / non_sequence”