java - Apache Commons FTP 问题

标签 java ftp apache-commons-net

我想使用 Apache Commons Net 实现一个仅用于上传数据的 FTP 客户端。 FTP 服务器的连接和登录工作正常。 但是上传不正确。 这些文件与原始文件相比有点大。 而且文件损坏了。 我尝试了一张图片、一段视频和一个文本文件。只有文本文件可以。

现在我在调试的时候看到了

boolean tmp=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);

给我 false。所以不能设置。为什么? (也许这不是问题所在?)

这是我的其余代码

client=new FTPClient();

    try {           
        int reply;
        client.connect(url, port);
        reply = client.getReplyCode();

        if (!FTPReply.isPositiveCompletion(reply))
        {
            client.disconnect();
            System.err.println("FTP server refused connection.");
            System.exit(1);
        }


        client.login(user, pw);
        boolean xxx=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
        client.setControlKeepAliveTimeout(300);
        client.enterLocalPassiveMode();

if (client.isConnected())
    {
    try {
        File file=new File(<FILE>);
        FileInputStream inputStream = new FileInputStream(file);
        OutputStream outputStream = client.storeFileStream(file.getName());

          byte[] buffer = new byte[4096];
          int l;
       while((l = inputStream.read(buffer))!=-1)
               {
                outputStream.write(buffer, 0, l);
            }

          inputStream.close();
          outputStream.flush();
          outputStream.close();}

最佳答案

更改以下内容:

boolean xxx=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);

应该是:

boolean xxx=client.setFileType(FTP.BINARY_FILE_TYPE);

您混淆了 FileTransferModes 和 FileTypes。

可用的文件类型是:

可用的 FileTransferModes 是:

我想如果 apache 为这些常量类型引入了枚举,那么这种问题就可以避免,但是 java-5 之前的运行时将无法使用该库。
我想知道 java 1.4 兼容性到底有多大问题。

关于java - Apache Commons FTP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651158/

相关文章:

java - 匹配字符串中第一次出现的分号,前提是前面没有 '--'

java - 如何使用.p12证书通过FTPClient连接到FTP?

java - 通过 FTP 下载图片并出现 Java 防火墙问题

java - FTPClient 的 isAvailable 和 is Connected 返回 true,但 storeFileStream 返回 null

java - Java 中的列表转换接口(interface)失败

java - 如何初始化Class<?扩展我的类>

java - 如何用三种不同的笔迹训练相同数字的tesseract-ocr?

character-encoding - 复制到 IFS 时,Java 源中的标点符号更改为重音字母

java - Apache Commons Net 慢速 FTP 上传

Java:上传文件到FTP问题(数据包丢失)