我正在开发需要在FTP服务器上连接的应用程序。然后,我需要获取一个名为“ new_order.txt”的特定文件的大小。因此,我使用的方法mlistFile(String filePath)在我上次使用该应用程序时运行良好。但是现在,mlistFile返回null,当我使用getSize()时,我的应用程序崩溃了(但我已连接到服务器)。我确实需要一些帮助,以查找问题所在。

这是代码:

try {
        String filePath = "new_order.txt";
        FTPFile ftpFile = mFtpClient.mlistFile(filePath);
        sizeFileFTPServer = ftpFile.getSize();

        File downloadedFile = new File(mainActivity.getDir("JSONDir", Context.MODE_PRIVATE), "new_order.txt");
        sizeDownloadedFile = downloadedFile.length();

    } catch (IOException e) {
        e.printStackTrace();
    }

    Log.d("SIZE FTP", Long.toString(sizeFileFTPServer));
    Log.d("SIZE LOCAL", Long.toString(sizeDownloadedFile));

    return (sizeDownloadedFile == sizeFileFTPServer);


这是我的错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long org.apache.commons.net.ftp.FTPFile.getSize()' on a null object reference
                                                                         at test.taxi.comincar.GetUpdate.fileOrderVerification(GetUpdate.java:249)
                                                                         at test.taxi.comincar.GetUpdate.get_new_order(GetUpdate.java:151)
                                                                         at test.taxi.comincar.GetUpdate.doInBackground(GetUpdate.java:75)
                                                                         at test.taxi.comincar.GetUpdate.doInBackground(GetUpdate.java:43)
                                                                         at android.os.AsyncTask$2.call(AsyncTask.java:288)


我已连接到服务器,指定的文件存在,上次使用此应用程序时,我的代码运行良好,但现在不行。我迷路了。

最佳答案

我也有这个问题。
使用此代码获取FTP的大小

FTPFile[] ff = ftp.listFiles("/dir/file.jpg");

        if(ff != null)
        {
                ff[0].getSize();
        }

07-27 19:12