So erkennen Sie, ob ein SFTP -Upload mit JSCH erfolgreich warJava

Java-Forum
Guest
 So erkennen Sie, ob ein SFTP -Upload mit JSCH erfolgreich war

Post by Guest »

Leider gibt die Methode getExitstatus () immer -1 zurück, daher kann ich das nicht verwenden, um mir zu sagen, ob ein Upload eines Datei funktioniert oder nicht. Ich habe versucht, die GetInputStream () -Methode der Kanal Klasse zu verwenden, aber wenn ich versuchte, aus dem Eingabebetrieb zu lesen Obwohl die Isconnected und isclosed () falsch und wahr waren - was darauf hindeutet, dass der Kanal tatsächlich geschlossen war). Der folgende Code blockiert immer, nachdem ich versuche, ein Datenbyte aus dem Eingabestream zu lesen: < /p>

Code: Select all

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>

Ich nehme an, meine Fragen sind: < /p>

[list]
[*]  Warum ist mein Code mein Code Blockieren, wann immer ich versuche, aus dem Eingabestream zu lesen (obwohl der Kanal 
tatsächlich geschlossen ist)
[*] Wie ist der Weg, um zu sagen, ob eine Datei hochladen funktioniert oder nicht. Ich denke, wenn eine sftpexception geworfen wird, die nicht erfolgreich ist, kann ich annehmen, dass es erfolgreich war?
[/list]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post