Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 551输出文件出错_Java_Apache_Groovy_Ftp - Fatal编程技术网

Java 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()

我正在使用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()
         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))