in src/main/java/org/apache/commons/net/ftp/FTPClient.java [902:932]
protected boolean _retrieveFile(final String command, final String remote, final OutputStream local) throws IOException {
final Socket socket = _openDataConnection_(command, remote);
if (socket == null) {
return false;
}
InputStream input = null;
CSL csl = null;
try {
try {
if (fileType == ASCII_FILE_TYPE) {
input = new FromNetASCIIInputStream(getBufferedInputStream(socket.getInputStream()));
} else {
input = getBufferedInputStream(socket.getInputStream());
}
if (DurationUtils.isPositive(controlKeepAliveTimeout)) {
csl = new CSL(this, controlKeepAliveTimeout, controlKeepAliveReplyTimeout);
}
// Treat everything else as binary for now
Util.copyStream(input, local, getBufferSize(), CopyStreamEvent.UNKNOWN_STREAM_SIZE, mergeListeners(csl), false);
} finally {
IOUtils.closeQuietly(input);
}
// Get the transfer response
return completePendingCommand();
} finally {
IOUtils.closeQuietly(socket);
if (csl != null) {
cslDebug = csl.cleanUp(); // fetch any outstanding keepalive replies
}
}
}