Java [закрытая] библиотека передачи SFTP

Я ищу очень простую Библиотеку Java для использования для передач файлов SFTP. Мне не нужны никакие другие функции кроме того.

Я судил Zehon, но это невероятно ворчливый, и я думаю, что 8 файлов банки являются немного сумасшедшими для такой небольшой функциональности, как я требую.

И библиотека должна быть свободной (как в бесплатном пиве), и предпочтительный Открытый исходный код (не требование).

Спасибо.

22
задан Valentin Rocher 27 February 2010 в 16:48
поделиться

3 ответа

Изменить: Я сохраню свой предыдущий ответ, поскольку JSch все еще используется во многих местах, но если вам нужна более документированная библиотека, вы можете использовать sshj . Пример того, как использовать его для sftp:

SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
ssh.connect("host");
try {
    ssh.authPassword("username", "password");
    SFTPClient sftp = ssh.newSFTPClient();
    try {
        sftp.put(new FileSystemFile("/path/of/local/file"), "/path/of/ftp/file");
    } finally {
        sftp.close();
    }
} finally {
    ssh.disconnect();
}

Используя JSch (java ssh lib, например, используемый Ant), вы можете сделать что-то вроде этого:

Session session = null;
Channel channel = null;
try {
    JSch ssh = new JSch();
    ssh.setKnownHosts("/path/of/known_hosts/file");
    session = ssh.getSession("username", "host", 22);
    session.setPassword("password");
    session.connect();
    channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp sftp = (ChannelSftp) channel;
    sftp.put("/path/of/local/file", "/path/of/ftp/file");
} catch (JSchException e) {
    e.printStackTrace();
} catch (SftpException e) {
    e.printStackTrace();
} finally {
    if (channel != null) {
        channel.disconnect();
    }
    if (session != null) {
        session.disconnect();
    }
}

Вы можете использовать JSch непосредственно этим способом или через Commons VFS , но тогда вам понадобятся как общие vfs jar, так и jsch jar.

41
ответ дан 29 November 2019 в 04:15
поделиться

Как насчет FTPSClient от Apache Commons?

-3
ответ дан 29 November 2019 в 04:15
поделиться

Вот полный исходный код примера с использованием JSch , не беспокоясь о проверке ключа ssh.

import com.jcraft.jsch.*;

public class TestJSch {
    public static void main(String args[]) {
        JSch jsch = new JSch();
        Session session = null;
        try {
            session = jsch.getSession("username", "127.0.0.1", 22);
            session.setConfig("StrictHostKeyChecking", "no");
            session.setPassword("password");
            session.connect();

            Channel channel = session.openChannel("sftp");
            channel.connect();
            ChannelSftp sftpChannel = (ChannelSftp) channel;
            sftpChannel.get("remotefile.txt", "localfile.txt");
            sftpChannel.exit();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (SftpException e) {
            e.printStackTrace();
        }
    }
}
8
ответ дан 29 November 2019 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: