我正在使用apache commons FTP库,并试图查看运行VXWorks的USB记忆棒上的文件。每当我尝试从该系统查看任何文件时,它都会返回0文件大小。当服务器是Windows计算机时,这可以正常工作。我正在使用的代码是:
public synchronized long getRemoteSize(String finalPath)
{
// Send file and if sent file doesn't match the source file, resend
try
{
FTPFile destinationFile = jh.getFtpClient().mlistFile(finalPath);
if (destinationFile != null)
{
return destinationFile.getSize();
}
else
{
return 0;
}
}
catch (IOException e)
{
return -1;
}
}
我也尝试发送一个直接的SIZE命令,但该命令未被识别。有人对为什么总是返回0大小有其他选择或解释吗?
答案 0 :(得分:1)
这听起来像您的VXWorks FTP服务器不支持MLST
在后台使用的mlistFile()
命令。 MLST
命令是与RFC 3659一起添加的。为了使用该命令,服务器需要实现该RFC。
您最好的选择是使用LIST
命令(例如listFiles(pathName)
)。这应该是一堆中最兼容的功能。此函数返回一个数组,而不是单个文件,因此您需要检查返回长度== 1,否则应减少替换的次数。