首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ftpClient.retrieveFileStream(filepath)返回null

ftpClient.retrieveFileStream(filepath)返回null
EN

Stack Overflow用户
提问于 2016-05-18 10:06:14
回答 1查看 6.2K关注 0票数 11

我有一个文件夹,它在ftp.For中有3个文件,第一个文件,缓冲区读取器正在从第二个文件中读取successfully.But,因为null.Dont知道原因是什么。

我的代码是

代码语言:javascript
运行
复制
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
 import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketException;
import java.util.logging.Logger;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

public class ExtractFile{

 public static void main(String args[]) {

 // get an ftpClient object
 FTPClient ftpClient = new FTPClient();
 FileOutputStream fos = null;

  try {
  // pass directory path on server to connect
  ftpClient.connect("XXXX");

  // pass username and password, returned true if authentication is
 // successful
  boolean login = ftpClient.login("XXXX", "XXXXX");

 if (login) {
System.out.println("Connection established...");

FTPFile[] files=ftpClient.listDirectories();
for(int i=0;i<files.length;i++){


    FTPFile file=files[i];

    BufferedReader reader = null;
    String firstLine = null;

    try {

        String currentline=null;

        listDirectory(ftpClient, ftpClient.printWorkingDirectory(), "", 0);


    } finally {
        if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
    }



}


   boolean logout = ftpClient.logout();
   if (logout) {
    System.out.println("Connection close...");
    }
   } else {
   System.out.println("Connection fail...");
  }

  } catch (SocketException e) {
   e.printStackTrace();
  } catch (IOException e) {
  e.printStackTrace();
  } finally {
   try {
  ftpClient.disconnect();
  } catch (IOException e) {
  e.printStackTrace();
 }
}
}
 static void listDirectory(FTPClient ftpClient, String parentDir,
        String currentDir, int level) throws IOException {
    String dirToList = parentDir;
    if (!currentDir.equals("")) {
        dirToList += "/" + currentDir;
    }

    FTPFile[] subFiles = ftpClient.listFiles(dirToList);

    if (subFiles != null && subFiles.length > 0) {
        for (FTPFile aFile : subFiles) {
            String currentFileName = aFile.getName();

            if (currentFileName.equals(".")
                    || currentFileName.equals("..")) {

                continue;
            }
            for (int i = 0; i < level; i++) {
                System.out.print("\t");
            }
            if (aFile.isDirectory()) {
                System.out.println("[" + currentFileName + "]");
                listDirectory(ftpClient, dirToList, currentFileName, level + 1);
            } else {
                System.out.println(currentFileName);
                String currentline=null;
                BufferedReader reader = null;
                String firstLine = null;

                /*****here i am getting stream as null**********/
                InputStream stream = ftpClient.retrieveFileStream(dirToList+"/"+currentFileName);                   



                reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
                String[] lines=new String[5];
                int i=0;

                    //TODO 

                while((currentline=reader.readLine())!=null){
                    lines[i]=currentline;
                    i++;
                        System.out.println(".."+currentline);
                }

             }

        }
    }
  }
 }

为什么我要从第二个文件中获得InputStream为null??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-12 05:00:26

我面临着同样的问题,通过调用completePendingCommand()并验证传输确实成功解决了问题,从而最终完成了文件传输。

文档所述

要完成文件传输,必须调用completePendingCommand并检查其返回值以验证成功。如果未完成此操作,则后续命令的行为可能会出人意料。

如果这不能解决问题,请使用getReplyCode()、getReplyString()或getReplyStrings()来查看确切的问题是什么。

编辑:刚刚注意到这是一个非常古老的帖子。但希望这会对其他人有所帮助。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37296399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档