Я хочу получить входной поток удаленного файла и зашифровать его байтовые данные, не загружая файл, а просто используя объект InputStream, возвращаемый следующим методом.
- sftpChannel.get ( "...");
Ниже приведен пример кода того, что я пытаюсь сделать. Вот мой код:
InputStream is = null;
OutputStream os = null;
try {
is = sftpChannel.get("/.../decrypted.txt");
os = sftpChannel.put("/.../ftp_encrypted.txt", ChannelSftp.OVERWRITE);
int byteRead = is.read();
while (byteRead != -1) {
os.write(((byte) byteRead) << 2); //encrypt the byte in some way
os.flush();
byteRead = is.read();
}
is.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
Я думал, что этого должно быть достаточно, но я получаю IOException:
java .io.IOException: 1: Конец файла at com.jcraft.jsch.ChannelSftp $ 1.flu sh (ChannelSftp. java: 858)
Кажется, проблема связана с сбросом объекта OutputStream. Удаление вызова метода .flu sh () не помогает.
Есть предложения? Благодаря.