我正在尝试从服务器下载文件。服务器有一个没有登录名或密码的访客帐户。
代码改编自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");
}
}
答案 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”