天天看點

java:sftp 推送檔案至伺服器

1、需要依賴:

<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.54</version>
</dependency>
           

2、判斷目标伺服器 需要檔案夾是否存在,不存在則建立建立

/**
	 * 檢查建立多層檔案夾
	 * 
	 * @param sftp
	 * @param path
	 */
	public static void checkDirsIsExsit(ChannelSftp sftp, String path) {

		
		try {
			sftp.cd(path);

		} catch (Exception e) {
			// TODO Auto-generated catch block

			String[] dirName = path.split("/");
			String t = "";
			for (int i = 0; i < dirName.length; i++) {			
				t = t + "/" + dirName[i];
				checkDirIsExsit(sftp, t);
			}

		}

	}

	/**
	 * ftp建立單個檔案夾
	 * 
	 * @param sftp
	 * @param path
	 */
	public static void checkDirIsExsit(ChannelSftp sftp, String path) {
		try {
			sftp.cd(path);

		} catch (Exception e) {
			// TODO Auto-generated catch block

			try {
				System.out.println("建立檔案夾:" + path);
				sftp.mkdir(path);

			} catch (SftpException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
	}
           

3、sftp 推送檔案之伺服器

/**
	 * 推送檔案
	 * 
	 * @param cfg
	 * @param src
	 * @param dst
	 * @throws JSchException
	 */
	public static void ftpPut(String userName, String host, int port, String passWord, String src, String dst)
			throws JSchException {

		JSch jsch = new JSch();

		Session session = jsch.getSession(userName, host, port);
		session.setPassword(passWord);
		Properties sshConfig = new Properties();
		sshConfig.put("StrictHostKeyChecking", "no");
		session.setConfig("userauth.gssapi-with-mic", "no");

		session.setConfig(sshConfig);

		session.connect();

		ChannelSftp ftp = (ChannelSftp) session.openChannel("sftp");
		ftp.connect();

		checkDirsIsExsit(ftp, dst);

		File dir = new File(src);

		String[] list = dir.list();

		for (String str : list) {

			try {
				
				ftp.put(dir.getAbsolutePath()+"/"+str, dst + "/"+str);
				System.out.println("推送:"+str+"完畢!!");
			} catch (SftpException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		ftp.disconnect();
		session.disconnect();
	}
           

推送程式至此完畢!!!