我正在开发需要在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();
}