Как определить, была ли успешная загрузка SFTP с использованием JSCHJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как определить, была ли успешная загрузка SFTP с использованием JSCH

Сообщение Anonymous »

К сожалению, метод GetExitStatus () всегда возвращает -1, поэтому я не могу использовать это, чтобы сказать мне, сработала ли загрузка файла. Я попытался использовать метод GetInputStream () класса канала , но всякий раз, когда я пытался прочитать из InputStream, мой код заблокирован навсегда, как если бы экземпляр канала все еще был открыт/подключен (даже хотя ISconnected и isclosed () были ложными и истинными соответственно - предполагая, что канал действительно был закрыт). Следующий код всегда блокируется после того, как я пытаюсь прочитать байт данных из потока ввода: < /p>

Код: Выделить всё

public class Put {

public static void main(String[] args) throws IOException {

Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
InputStream in = null;
JSch jsch = new JSch();

try {
jsch.setKnownHosts("known_hosts");
session = jsch.getSession("user", "host", 22);
session.setPassword("password");

session.connect();
channel = session.openChannel("sftp");
channel.setInputStream(null);
stdout = channel.getInputStream();

channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd("/path/to/sftp");

channelSftp.put("/path/to/localfile", "/path/to/remotefile");

} catch (JSchException e) {
System.out.println(e.getMessage());
e.printStackTrace();
} catch (SftpException e) {
System.out.println(e.id);
System.out.println(e.getMessage());
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {

if(channelSftp != null && channelSftp.isConnected())channelSftp.exit();
if(channel != null && channel.isConnected()) channel.disconnect();
if(session != null && session.isConnected()) session.disconnect();
}

System.out.println("Channel is connected? " + channel.isConnected()); // returns false as i would expect
System.out.println("Channel is closed? " + channel.isClosed()); // returns true as i would expect
System.out.println(stdout.available()); // returns 0
System.out.println(stdout.read()); // code blocks here

}

}
< /code>

Полагаю, мои вопросы: < /p>

[list]
[*]  Почему мой код Блокировка всякий раз, когда я пытаюсь читать из входного потока (даже если канал 
действительно закрыт)
[*] Какой способ сказать, если файл Загрузка сработала или нет. Я предполагаю, что если sftpexception брошено, это безуспешно, иначе я могу предположить, что это было успешным?
[/list]

Подробнее здесь: https://stackoverflow.com/questions/239 ... using-jsch
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»