You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by "Brunninger, Martin" <Ma...@ops.de> on 2004/12/21 08:12:10 UTC
AW: [net] FTPClient.retrieveFileStream returns null even when no
error is encountered
Seems you forgot to do a completePendingCommand() after closing the streams.
Refer to API-Doc.
Best Regards
Martin Brunninger
> -----Ursprüngliche Nachricht-----
> Von: Tom Werges [mailto:twerges@idc-global.com]
> Gesendet: Dienstag, 21. Dezember 2004 07:45
> An: commons-user@jakarta.apache.org
> Betreff: [net] FTPClient.retrieveFileStream returns null even when no
> error is encountered
>
>
> The FTPClient.retrieveFileStream method is returning null on
> all invocations
> after the first one on the same connection. The javadoc
> indicates that a
> null will only be returned in case of an error, in which case
> I can check
> the reply code for the exact problem. But the reply code
> indicates that
> everything went fine with no errors, and a null is still returned.
>
> The retrieveFile method works properly even if I call it
> repeatedly. However
> the retrieveFile method is not suitable for my purposes
> because I require an
> InputStream for updating a gui.
>
> I haven't entered this into the bug database yet because I'm
> assuming I'm
> making an elementary mistake. However I was not able to find
> any information
> on this issue in the mailing list archives or in the FAQ.
>
> The code is as follows:
>
> InputStream is = null;
> OutputStream os = null;
>
> for (TransferItem item : xferItems) {
>
> try {
>
> os = new FileOutputStream(new File(item.getLocalPath())); //local
> destination
>
> // retrieveFile method WORKS PROPERLY:
> //
> // ftpClient.retrieveFile(item.getServerPath(), os);
>
>
> // however, retrieveFileStream (following) does not work properly:
>
> is = ftpClient.retrieveFileStream(item.getServerPath());
> System.out.printf("Retrieve file [%s], code:%s, reply:%s",
> item.getServerPath(),
> ftpClient.getReplyCode(),
> ftpClient.getReplyString());
> if (is == null) {
> System.out.println("InputStream was null! Skipping...");
> continue;
> }
> copyStream(is, os);
>
> } finally {
> if (is != null) is.close();
> if (os != null) os.close();
> }
> }
>
> The initial invocation works fine, after which I always get a
> null plus a
> message that everything is fine.
>
> One possibly relevant detail is that the reply codes are not
> always the
> same. The first invocation has a reply code of 150 ("Opening
> BINARY mode
> data connection"), whereas the second has 200 ("PORT command
> successful.
> Consider using PASV."). Subsequent invocations yield 150 once again.
>
> I'm using jdk1.5 on linux connecting to a vsftp server on linux.
>
> Thanks for any help,
> Tom W
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org