java ftp nullpointer异常

Mav*_*ick 0 java ftp networking nullpointerexception apache-commons

我有代码将文件上传到服务器.

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

    import java.io.File;
    import java.io.IOException;
    import org.apache.commons.net.ftp.FTPFile;
    import java.io.FileInputStream;
    import java.net.SocketException;

    public class FtpConnectDemo {
        public static void main(String[] args) throws SocketException, IOException{
            FTPClient client = new FTPClient();
            FileInputStream fis = null;

            client.connect("ftp.someserver.co.uk",21);
            boolean login = client.login("webmaster@someserver.co.uk",
                    "mypassword");


            String filename = "E:/workbench j2ee/cPEP_UI/WebContent/engine.xml";
            client.storeFile(filename, fis);
            client.logout();
            fis.close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,它给了我这个错误:

Exception in thread "main" java.lang.NullPointerException
    at FtpConnectDemo.main(FtpConnectDemo.java:22)
Run Code Online (Sandbox Code Playgroud)

用户名,密码,服务器名称都可以.那怎么了?我可以使用telnet连接到FTP.有任何想法吗?

编辑1

好的,现在我没有得到nullpointer异常,因为我初始化了fis.但我的文件尚未上传; 可能是什么问题?

Viv*_*sse 6

你永远不会实现你的变量fis.我认为这是你的问题.

这导致两个问题:

  • 您尝试将其存储null为第20行的文件.这由您正在使用的Apache FTP库处理.
  • NullPointerException第22行,当你试着打电话close().

另外,我想指出的另一件事是:第20行,当你打电话时storeFile.您提供的路径是指向本地文件的路径.我想你应该把远程文件路径放在这里.

最终代码应如下所示:

// ...

FileInputStream fis = new FileInputStream("E:/workbench j2ee/cPEP_UI/WebContent/engine.xml");

// ...

client.storeFile("engine.xml", fis);

// ...
Run Code Online (Sandbox Code Playgroud)