Передача файлов Java с использованием JSch

У меня есть приложение Java SFTP Transfer, которое работает нормально, используя файл, сохраненный на диске. Мне нравится изменять логику, чтобы использовать строку или поток. Вся информация, которую я могу найти, заключается в том, что для этого требуется только FileInputStream. Любая помощь будет здорово.

ChannelSftp c = createSession();
try {
    File f = new File(workingFile);
    c.put(new FileInputStream(f), f.getName());
} catch (Exception e) {
    System.err.println("Storing remote file failed. "+e.toString());
    throw e;
}

person Community    schedule 27.01.2016    source источник


Ответы (1)


На основе JSch 0.1.44 (неофициального) Javadoc, поддерживаемого Пауло Эберманном, найден здесь, ChannelSftp содержит несколько перегружены put(...) методы. Таким образом, вы можете предоставить InputStream (или любой подкласс), а не только ссылку FileInputStream. Например, put(InputStream src, String dst) загрузит файл из входного потока src в dst, что является имя удаленного целевого файла относительно текущего удаленного каталога.

Вы также можете указать String путь к файлу, который хотите передать. Например, метод put(String src, String dst) с параметрами:

  • src – имя локального исходного файла, абсолютное или относительное относительно текущего локального каталога.
  • dst — имя удаленного файла назначения, абсолютное или относительное относительно текущего удаленного каталога.
person Voicu    schedule 27.01.2016
comment
Как преобразовать строку в объект InputStream? Я тестировал этот код var is = new ByteArrayInputStream(connectorMessage.getRawData()); - person ; 27.01.2016
comment
@THOMASJ.Mcdevitt: в Java вы можете попробовать это или это. - person Voicu; 27.01.2016