Как передать большие файлы с локального на удаленный (Windows сервер) с помощью JSCH? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть требование для передачи большого файла (т.е.> 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();

Не удалось выполнить оба подхода для больших файлов, но нет ошибки, просто файл поврежден при передаче файла в удаленный сервер.

Для меньших файлов выполняется тот же код, что и ожидалось.

Есть ли другой способ исправить это? или что-то не так в коде?

...