当前位置: 首页 > 面试题库 >

Java中的FTPClient类问题

贺飞星
2023-03-14
问题内容

我正在使用org.apache.commons.net.ftp.FTPClient,看到的行为令人困惑。

下面的方法打算浏览一个FTPFile列表,读入它们,然后对内容进行一些处理。都可以了 (真正)不起作用的是FTPClient对象执行以下操作…

1) Properly retrieves and stores the FIRST file in the list  
2) List item evaluates to NULL for x number of successive iterations of the loop (x varies on successive attempts  
3) manages to retrieve exactly 1 more file in the list  
4) reports that it is null for exactly 1 more file in the list  
5) hangs indefinitely, reporting no further activity.

public static String mergeXMLFiles(List<FTPFile> files, String rootElementNodeName, FTPClient ftp){
        String ret = null;
        String fileAsString   = null; 
        //InputStream inStream;
        int c;

        if(files == null || rootElementNodeName == null)
            return null;
        try {
            System.out.println("GETTING " + files.size() + " files");
            for (FTPFile file : files) {
                fileAsString = "";
                InputStream inStream = ftp.retrieveFileStream(file.getName());

                if(inStream == null){
                    System.out.println("FtpUtil.mergeXMLFiles() couldn't initialize inStream for file:" + file.getName());

                    continue;//THIS IS THE PART THAT I SEE FOR files [1 - arbitrary number (usually around 20)] and then 1 more time for [x + 2] after [x + 1] passes successfully.
                }
                while((c = inStream.read()) != -1){

                    fileAsString += Character.valueOf((char)c);
                }
                inStream.close();


                System.out.println("FILE:" + file.getName() + "\n" + fileAsString);
            }


        } catch (Exception e) {
            System.out.println("FtpUtil.mergeXMLFiles() failed:" + e);
        }
        return ret;
    }

有没有人看到这样的东西?我是FTPClient的新手,我在做错什么吗?


问题答案:

根据该API
FTPClient.retrieveFileStream(),该方法返回null时,它无法打开数据连接,在这种情况下,你应该检查答复代码(例如getReplyCode()getReplyString()getReplyStrings()),看看它为什么失败。另外,您假设通过调用completePendingCommand()并验证传输确实成功来完成文件传输。



 类似资料:
  • 本文向大家介绍Java使用FTPClient类读写FTP,包括了Java使用FTPClient类读写FTP的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java使用FTPClient类读写FTP的具体代码,供大家参考,具体内容如下 1.首先先导入相关jar包 2.创建一个连接FTP的工具类FTPUtil.java 3.编写一个读取FTP上文件的类ReadFTPFile.java 4

  • 代码中的端口号必须与我尝试连接的FTP服务器(本例中为localhost)使用的端口号完全相同吗? 错误日志: java.net.ConnectException:连接被拒绝:在java.net.DualStackPlainSocketImpl.connect0(本机方法)在java.net.DualStackPlainSocketImpl.socketConnect(未知源)在java.net.

  • 问题内容: 我正在尝试做一个非常简单的文件上传。我想要一个Java FTPClient,它可以上传我告诉它的任何文件。但是pdf总是一团糟,我的pdf编辑器(Adobe)不会打开它,说存在I / O错误。 我正在使用以下课程: 为什么此方法不起作用,如何解决? 问题答案: 这是行不通的,因为默认的传输模式FTPClient是。您只需要更新配置即可以二进制模式传输。

  • 我在设置Java开发环境时遇到了一个问题。在过去,我安装了Java,然后安装了IDE,然后开始编写代码。我现在开始设置我的笔记本电脑,使用命令行编译和记事本作为我的代码编辑器。这是我第一次尝试纠正错误。 我运行javac,它创建了我的。类文件没有问题,但是我尝试用java A运行类文件,它抛出了一个错误: c:\工作区 我的类路径设置为C:\Program Files\Java\jdk-14.0.

  • 问题内容: 以下代码旨在获取一个文件(任何文件都不错,但是现在无论如何我都在使用图像),然后将其上传到我的服务器(行之有效的)。唯一的问题是图像在传输后非常歪斜。主要建议是使用FTPClient的setFileTranferMode到FTPClient.BINARY_FILE_TYPE,这…目前没有任何作用… 这是该方法的代码: 一如既往,任何帮助将不胜感激!谢谢! 问题答案: 您没有使用正确的方

  • 不久前,我通过教程和视频开始学习Java,在了解了一些东西(按钮、布局、音频和其他一些东西的工作原理)之后,我现在的目标之一是创建一个小型交互式游戏。 我在主课上写了相当大一部分的游戏,效果很好,但过了一段时间就变得一团糟了。 所以我决定从一开始就尝试另一次,对游戏的每个部分使用不同的类,让代码看起来更清晰易懂。 但我从一开始就有一个问题,在论坛上搜索了几个小时的教程和答案,但没有找到一个准确的答