Java 551输出文件出错
我正在使用apache org.apache.commons.net.ftp.FTPClient将文件上载到apache FTPServer。当我调用org.apache.commons.net.ftp.FTPClient.storeFile时,它总是失败,并出现“输出文件上出现551错误”错误 这是我的节目Java 551输出文件出错,java,apache,groovy,ftp,Java,Apache,Groovy,Ftp,我正在使用apache org.apache.commons.net.ftp.FTPClient将文件上载到apache FTPServer。当我调用org.apache.commons.net.ftp.FTPClient.storeFile时,它总是失败,并出现“输出文件上出现551错误”错误 这是我的节目 public class FileOperations { def ftp (params) { def ftp = new FTPClient()
public class FileOperations {
def ftp (params) {
def ftp = new FTPClient()
try {
ftp.connect(params.host, params.port)
println ftp.getReplyString()
int reply = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.err.println("FTP server refused connection.");
return
}
boolean successLogin = ftp.login(params.username, params.password)
println ftp.getReplyString()
if(!successLogin) {
println "FTP login unsuccessful "+params.username
return
}
ftp.setFileType(FTPClient.BINARY_FILE_TYPE)
println ftp.getReplyString()
ftp.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE)
println ftp.getReplyString()
String absoluteFilename=params.file
def isSuccessful = ftp.storeFile(params.file,new FileInputStream(absoluteFilename))
println ftp.getReplyString()
ftp.logout()
} finally {
if(ftp.isConnected())
ftp.disconnect()
}
}
static main(args) {
def operations = new FileOperations();
def params = [:]
params.put "host","localhost"
params.put "port",2121
params.put "username","test"
params.put "password","test"
params.put "file","C:/tmp/sample.txt"
operations.ftp(params)
}
}
输出为
220为新用户准备好服务
230用户已登录,请继续
200命令类型好
200命令模式,好的
551/C:/tmp/sample.txt:输出文件出错
我不明白这个错误是什么意思。有人能帮我解决这个问题吗?有
params.put "file","C:/tmp/sample.txt"
您使用它作为远程文件名,它应该是一个绝对或相对路径名,相对于FTP用户的FTP端根目录,也许只是“sample.txt”。(FTP服务器上没有像C:
这样的设备。)
要读取本地文件名,必须使用完整的路径名,就像现在一样:
String localFilename = "C:/tmp/sample.txt".
def isSuccessful = ftp.storeFile(params.file,new FileInputStream(localFilename))