2016-01-27 3 views
0

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

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; 
} 

ответ

1

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

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

  • src - имя локального исходного файла, абсолютное или относительно текущего локального каталога.
  • dst - имя файла удаленного назначения, абсолютное или относительное к текущему удаленному каталогу.
+0

Как преобразовать строку в объект InputStream? Я тестировал этот код var = new ByteArrayInputStream (connectorMessage.getRawData()); –

+0

@ THOMASJ.Mcdevitt: на Java вы можете попробовать [это] (http://stackoverflow.com/questions/247161/how-do-i-turn-a-string-into-a-stream-in-java) или [это] (http://stackoverflow.com/questions/782178/how-do-i-convert-a-string-to-an-inputstream-in-java). – Voicu

Смежные вопросы