Java FTPClient - 远程文件大小 0 字节 VXWorks

Java FTPClient - Remote File size 0 bytes VXWorks

我正在使用 apache commons FTP 库并试图查看 USB 记忆棒上的文件 运行 VXWorks。每次我尝试查看该系统中的任何文件时,它 returns 的文件大小为 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 大小返回,有人有任何其他选择或任何解释吗?

听起来您的 VXWorks FTP 服务器不支持 MLST 命令,这是 mlistFile() 在幕后使用的命令。 MLST 命令添加了 RFC 3659。为了使用该命令,服务器需要实施该 RFC。

最好的办法是使用 LIST 命令(例如 listFiles(pathName))。这应该是一堆中最兼容的功能。此函数 return 是一个数组而不是单个文件,因此您需要检查 return 长度 == 1,否则应该或多或少地替换掉。