Я хотел бы загрузить файл с сервера sftp с помощью класса Runtime of Java. Я не могу использовать такую библиотеку, как Jsch или SSHJ, потому что мне нужно использовать опцию -B для увеличения размера буфера. Я пытался с этим кодом до сих пор:Отправьте команду SFTP с помощью runtime.exec
public void download(String source, String destination,String port, String user, String host){
Runtime runtime = Runtime.getRuntime();
String cmd = "sftp -oPort=" + port + " -B 150000 "+ user + "@" + host + ":" + source + " " + destination;
String[] args = { "/bin/sh", "-c", cmd };
try {
long startTime = System.currentTimeMillis();
log.info("cmd: "+ cmd);
final Process process = runtime.exec(args);
process.waitFor();
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
System.out.println("Time: "+elapsedTime);
BufferedReader bre = new BufferedReader(new InputStreamReader(process.getErrorStream()));
StringBuffer sbe = new StringBuffer();
String lineError;
while ((lineError = bre.readLine()) != null) {
sbe.append(lineError).append("\n");
}
String answerError = sbe.toString();
if(answerError.length()>0)log.error("Error:"+answerError);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Я получаю сообщение об ошибке: Подключение к XXXXXXX ... с именем хоста вместо «хххххх»
Я попробовал команду непосредственно в putty, и она отлично работает, но когда я использую ее в java, она не работает вообще. Я также попробовал команду scp с runtime.exec() для загрузки вместо sftp и этой работы.
У кого-то есть ключ, почему он не работает? Я не могу найти пример этого метода. Или кто-то знает библиотеку для передачи sftp, которая позволяет установить параметр -B? Возможно, я пропустил метод в Jsch и Sshj.
Заранее спасибо
Не уверен, что это поможет, но попробовали ли вы получить поток выходных данных процесса и посмотреть, есть ли там какая-либо информация? –
[Здесь] (http://www.jcraft.com/jsch/examples/Sftp.java.html) - это библиотека, которую вы можете использовать. Что означает «когда я использую его в java, он вообще не работает»? – Jens