Java 文件未成功上载到FTP

Java 文件未成功上载到FTP,java,apache,ftp,apache-commons,Java,Apache,Ftp,Apache Commons,我已经写了一个独立的程序上传文件到FTP服务器。代码运行正常,但我在FTP上找不到该文件。这是密码 import java.io.FileInputStream; import java.io.IOException; import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class FT

我已经写了一个独立的程序上传文件到FTP服务器。代码运行正常,但我在FTP上找不到该文件。这是密码

import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;


public class FTPDemo {

    public static void main(String[] args) {

        FTPClient ftp = new FTPClient();
        int reply;

        try {

            ftp.connect("ip address");
            ftp.login("username","password");
            reply = ftp.getReplyCode();

            if(FTPReply.isPositiveCompletion(reply)){
                System.out.println("Connected Success");
            }else {
                System.out.println("Connection Failed");
                ftp.disconnect();
            }

            FileInputStream fis = null;
            String filename = "demo.txt";
            fis = new FileInputStream("C:\\demo.txt");
            System.out.println("Is file stored: "+ftp.storeFile(filename,fis));
            fis.close();
            ftp.disconnect();
        } catch (SocketException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }
}
存储的文件返回false。有什么问题吗?

让我给你举个例子:

FTPClient中所有FTP命令方法的约定是,它们要么返回布尔值,要么返回其他值。布尔方法在FTP服务器成功完成回复时返回true,在导致错误或失败的回复时返回false。返回布尔值以外的值的方法返回包含FTP命令生成的更高级别数据的值,如果应答导致错误或失败,则返回null。如果要访问导致成功或失败的确切FTP应答代码,则必须在成功或失败后调用getReplyCode


换句话说,要了解失败的实际原因,您需要调用
ftp.getReplyCode()
,然后从那里开始工作。

使用getReplyCode()方法获取准确的ftp错误代码。然后我们可以调查原因。我相信回复代码是正确的,因为我可以在控制台上看到消息“Connected Success”。是的,但请检查在调用storeFile()后getReplyCode()返回的内容。在调用storeFile()之前回复代码是230,在调用storeFile()之后回复代码是500。在此页面中
500语法错误,无法识别命令。这可能包括命令行过长等错误。
在调用storeFile之前请尝试以下操作:
ftp.setFileType(ftp.BINARY\u FILE\u TYPE,ftp.BINARY\u FILE\u TYPE);setFileTransferMode(ftp.BINARY\u文件类型)我使用了您指定的上述方法,但仍然没有在FTP上创建文件。storeFileCall()调用前230和调用后500的回复代码相同。