У меня есть требование для передачи большого файла (т.е.> 1 ГБ) с локального на удаленный.
Для этого я использовал библиотеку JSCH и пробовал два подхода / метода.
Первый Подход:
sftpChannel.put(new FileInputStream("file path"), "remotePath");
Второй подход (Попытка чтения в чанках):
bufferInput = new BufferedInputStream(new FileInputStream("file path"));
byte data[] = new byte[4096];
byteOut = new ByteArrayOutputStream();
int count;
while ((count = bufferInput.read(data, 0, 4096)) != -1) {
byteOut.write(data, 0, count);
}
bufferInput.close();
InputStream is = new ByteArrayInputStream(byteOut.toByteArray());
byteOut.flush();
byteOut.close();
sftpChannel.put(is, "remotePath");
is.close();
Не удалось выполнить оба подхода для больших файлов, но нет ошибки, просто файл поврежден при передаче файла в удаленный сервер.
Для меньших файлов выполняется тот же код, что и ожидалось.
Есть ли другой способ исправить это? или что-то не так в коде?