FTP客户端子目录创建
问题描述:
我正在使用FTPClient在FTP服务器中创建子目录。我想在“Root”下创建一个目录“Archive”。我使用下面的函数来创建子目录。FTP客户端子目录创建
boolean s = ftNew.makeDirectory("/"+folderName+"/Archive");
但它返回false并且不能创建子目录“存档”。如何解决这个问题?
答
- 用户可能没有权限创建目录(至少在此特定位置)。
- 由“folderName”描述的目录是否存在?如果没有,那么在单次调用中创建整个目录层次结构(即/ {folderName}/Archive)会有一些困难。确保“folderName”存在或在单独的步骤中创建它。
FTPClient的makeDirectory返回true或false,它不是非常有用的和比较模糊的结果。幸运的是,您可以改进您的代码以报告精确的FTP状态消息。
这里有您需要什么:
private static void showServerReply(FTPClient ftpClient) {
String[] replies = ftpClient.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
调用此每FTPClient方法之后,例如:
package apachenet.ftp;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
public class App {
public static void main(String[] args) {
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect("127.0.0.1");
showServerReply(client);
client.login("pwyrwinski", "secret");
showServerReply(client);
System.out.println("Current working directory is: " + client.printWorkingDirectory());
String someDirectory = "nonexistentDir";
client.makeDirectory("/" + someDirectory + "/Archive");
showServerReply(client);
client.logout();
showServerReply(client);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void showServerReply(FTPClient ftpClient) {
// ...
}
}
结果我的机器上:
SERVER: 220 (vsFTPd 2.3.5)
SERVER: 230 Login successful.
Current working directory is: "/home/pwyrwinski"
SERVER: 550 Create directory operation failed.
SERVER: 221 Goodbye.
当我改变String someDirectory
到“home/pwyrwinski”:
SERVER: 220 (vsFTPd 2.3.5)
SERVER: 230 Login successful.
Current working directory is: "/home/pwyrwinski"
SERVER: 257 "/home/pwyrwinski/Archive" created
SERVER: 221 Goodbye.
550
是代码权限或访问被拒绝,这个和其他代码很容易谷歌。
我希望这会帮助你。
答
您应该逐步创建目录。另外,您将获得创建目录false.There就是一个例子。 http://www.codejava.net/java-se/networking/ftp/creating-nested-directory-structure-on-a-ftp-server