Hmm maybe it is the bufferdStream.
That's working code I'm using in a project for years now:
private FTPClient createClient()
{
FTPClient ftp = new FTPClient();
FTPClientConfig config = new FTPClientConfig();
config.setServerTimeZoneId("UTC");
ftp.setControlKeepAliveTimeout(1000 * 60 * 5l);
ftp.setControlKeepAliveReplyTimeout(1000 * 60 * 5);
ftp.setDataTimeout(1000 * 60 * 5);
ftp.setRemoteVerificationEnabled(false);
return ftp;
}
if (FetchMode.BYTE_DATA.equals(fetchMode))
{
LOGGER.info("Using BINARY_FILE_TYPE.");
ftp.setFileType(FTP.BINARY_FILE_TYPE);
InputStream inStream = ftp.retrieveFileStream(ftpFile.getName());
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[(int) (ftpFile.getSize() * 2)];
while ((nRead = inStream.read(data, 0, data.length)) != -1)
{
buffer.write(data, 0, nRead);
}
buffer.flush();
content.setByteData(buffer.toByteArray());
}