in src/main/java/org/apache/commons/net/ftp/FTPClient.java [946:983]
protected boolean _storeFile(final String command, final String remote, final InputStream local) throws IOException {
final Socket socket = _openDataConnection_(command, remote);
if (socket == null) {
return false;
}
final OutputStream output;
if (fileType == ASCII_FILE_TYPE) {
output = new ToNetASCIIOutputStream(getBufferedOutputStream(socket.getOutputStream()));
} else {
output = getBufferedOutputStream(socket.getOutputStream());
}
CSL csl = null;
if (DurationUtils.isPositive(controlKeepAliveTimeout)) {
csl = new CSL(this, controlKeepAliveTimeout, controlKeepAliveReplyTimeout);
}
// Treat everything else as binary for now
try {
Util.copyStream(local, output, getBufferSize(), CopyStreamEvent.UNKNOWN_STREAM_SIZE, mergeListeners(csl), false);
output.close(); // ensure the file is fully written
socket.close(); // done writing the file
// Get the transfer response
return completePendingCommand();
} catch (final IOException e) {
Util.closeQuietly(output); // ignore close errors here
Util.closeQuietly(socket); // ignore close errors here
throw e;
} finally {
if (csl != null) {
cslDebug = csl.cleanUp(); // fetch any outstanding keepalive replies
}
}
}