


Eine detaillierte Einführung in den Funktionscode von Java, der den SFTP-Client zum Hochladen von Dateien und Ordnern implementiert
In diesem Artikel wird hauptsächlich der Funktionscode von Java zur Implementierung des SFTP-Clients zum Hochladen von Dateien und Ordnern vorgestellt. Interessierte können sich darüber informieren.
1. Die abhängige JAR-Datei jsch-0.1.53.jar
2. Die Anmeldemethode umfasst die Passwortanmeldung und die Schlüsselanmeldung
Code:
Hauptfunktion:
import java.util.Properties; import com.cloudpower.util.Login; import com.util.LoadProperties; public class Ftp { public static void main(String[] args) { Properties properties = LoadProperties.getProperties(); Login.login(properties); } }
Code für Anmeldeseite:
package com.cloudpower.util; import java.io.Console; import java.util.Properties; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class Login { public static void login(Properties properties) { String ip = properties.getProperty("ip"); String user = properties.getProperty("user"); String pwd = properties.getProperty("pwd"); String port = properties.getProperty("port"); String privateKeyPath = properties.getProperty("privateKeyPath"); String passphrase = properties.getProperty("passphrase"); String sourcePath = properties.getProperty("sourcePath"); String destinationPath = properties.getProperty("destinationPath"); if (ip != null && !ip.equals("") && user != null && !user.equals("") && port != null && !port.equals("") && sourcePath != null && !sourcePath.equals("") && destinationPath != null && !destinationPath.equals("")) { if (privateKeyPath != null && !privateKeyPath.equals("")) { sshSftp2(ip, user, Integer.parseInt(port), privateKeyPath, passphrase, sourcePath, destinationPath); } else if (pwd != null && !pwd.equals("")) { sshSftp(ip, user, pwd, Integer.parseInt(port), sourcePath, destinationPath); } else { Console console = System.console(); System.out.print("Enter password:"); char[] readPassword = console.readPassword(); sshSftp(ip, user, new String(readPassword), Integer.parseInt(port), sourcePath, destinationPath); } } else { System.out.println("请先设置配置文件"); } } /** * 密码方式登录 * * @param ip * @param user * @param psw * @param port * @param sPath * @param dPath */ public static void sshSftp(String ip, String user, String psw, int port, String sPath, String dPath) { System.out.println("password login"); Session session = null; JSch jsch = new JSch(); try { if (port <= 0) { // 连接服务器,采用默认端口 session = jsch.getSession(user, ip); } else { // 采用指定的端口连接服务器 session = jsch.getSession(user, ip, port); } // 如果服务器连接不上,则抛出异常 if (session == null) { throw new Exception("session is null"); } // 设置登陆主机的密码 session.setPassword(psw);// 设置密码 // 设置第一次登陆的时候提示,可选值:(ask | yes | no) session.setConfig("StrictHostKeyChecking", "no"); // 设置登陆超时时间 session.connect(300000); UpLoadFile.upLoadFile(session, sPath, dPath); } catch (Exception e) { e.printStackTrace(); } System.out.println("success"); } /** * 密匙方式登录 * * @param ip * @param user * @param port * @param privateKey * @param passphrase * @param sPath * @param dPath */ public static void sshSftp2(String ip, String user, int port, String privateKey, String passphrase, String sPath, String dPath) { System.out.println("privateKey login"); Session session = null; JSch jsch = new JSch(); try { // 设置密钥和密码 // 支持密钥的方式登陆,只需在jsch.getSession之前设置一下密钥的相关信息就可以了 if (privateKey != null && !"".equals(privateKey)) { if (passphrase != null && "".equals(passphrase)) { // 设置带口令的密钥 jsch.addIdentity(privateKey, passphrase); } else { // 设置不带口令的密钥 jsch.addIdentity(privateKey); } } if (port <= 0) { // 连接服务器,采用默认端口 session = jsch.getSession(user, ip); } else { // 采用指定的端口连接服务器 session = jsch.getSession(user, ip, port); } // 如果服务器连接不上,则抛出异常 if (session == null) { throw new Exception("session is null"); } // 设置第一次登陆的时候提示,可选值:(ask | yes | no) session.setConfig("StrictHostKeyChecking", "no"); // 设置登陆超时时间 session.connect(300000); UpLoadFile.upLoadFile(session, sPath, dPath); System.out.println("success"); } catch (Exception e) { e.printStackTrace(); } } }
Datei-Upload-Code:
package com.cloudpower.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Scanner; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; public class UpLoadFile { public static void upLoadFile(Session session, String sPath, String dPath) { Channel channel = null; try { channel = (Channel) session.openChannel("sftp"); channel.connect(10000000); ChannelSftp sftp = (ChannelSftp) channel; try { sftp.cd(dPath); Scanner scanner = new Scanner(System.in); System.out.println(dPath + ":此目录已存在,文件可能会被覆盖!是否继续y/n?"); String next = scanner.next(); if (!next.toLowerCase().equals("y")) { return; } } catch (SftpException e) { sftp.mkdir(dPath); sftp.cd(dPath); } File file = new File(sPath); copyFile(sftp, file, sftp.pwd()); } catch (Exception e) { e.printStackTrace(); } finally { session.disconnect(); channel.disconnect(); } } public static void copyFile(ChannelSftp sftp, File file, String pwd) { if (file.isDirectory()) { File[] list = file.listFiles(); try { try { String fileName = file.getName(); sftp.cd(pwd); System.out.println("正在创建目录:" + sftp.pwd() + "/" + fileName); sftp.mkdir(fileName); System.out.println("目录创建成功:" + sftp.pwd() + "/" + fileName); } catch (Exception e) { // TODO: handle exception } pwd = pwd + "/" + file.getName(); try { sftp.cd(file.getName()); } catch (SftpException e) { // TODO: handle exception e.printStackTrace(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } for (int i = 0; i < list.length; i++) { copyFile(sftp, list[i], pwd); } } else { try { sftp.cd(pwd); } catch (SftpException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println("正在复制文件:" + file.getAbsolutePath()); InputStream instream = null; OutputStream outstream = null; try { outstream = sftp.put(file.getName()); instream = new FileInputStream(file); byte b[] = new byte[1024]; int n; try { while ((n = instream.read(b)) != -1) { outstream.write(b, 0, n); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (SftpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { outstream.flush(); outstream.close(); instream.close(); } catch (Exception e2) { // TODO: handle exception e2.printStackTrace(); } } } } }
Code um die Konfigurationsdatei zu lesen:
package com.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class LoadProperties { public static Properties getProperties() { File file = new File(Class.class.getClass().getResource("/").getPath() + "properties.properties"); InputStream inputStream = null; try { inputStream = new FileInputStream(file); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Properties properties = new Properties(); try { properties.load(inputStream); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return properties; } }
Codeverzeichnisstruktur:
Wenn der Test ausgeführt wird, wird die Konfigurationsdatei im Bin-Verzeichnis des Projekts abgelegt (sie muss beim Packen in eine ausführbare JAR-Datei gelöscht werden). Nachdem das Packen abgeschlossen ist, platzieren Sie die Konfigurationsdatei und jar-Paket im selben Verzeichnis) Verfügbar):
properties.properties
ip= user= pwd= port=22 privateKeyPath= passphrase= sourcePath= destinationPath=/home/dbbs/f
Ausführbare JAR-Datei verpacken:
Export->java->Runnabe JAR-Datei
Nach Abschluss
Führen Sie java -jar auf der Konsole aus und exportieren Sie den Namen von das jar-Paket.jar
Das Obige ist eine detaillierte Einführung in den Funktionscode von Java zum Implementieren des SFTP-Clients zum Hochladen von Dateien und Ordnern. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php .cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.
