java通过jsch使用sftp连接linux处理文件

世上唯一不能复制的是时间,唯一不能重演的是人生,唯一不劳而获的是年龄。该怎么走,过什么样的生活,全凭自己的选择和努力。人生很贵,请别浪费!与智者为伍,与良善者同行。java通过jsch使用sftp连接linux处理文件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、Maven依赖

        <!--Java连接Linux服务器依赖-->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

2、相关实现

private static final String RECORD_DIR="/dings";
    private static final String SAVE_DIR="D:/backGroundVideos";
    public static void main(String[] args){
        // SFTP服务器地址
        String host = "xxx.xxx.xxx.xxx";
        // SFTP服务器端口号
        int port = Integer.valueOf("22");
        // SFTP登录用户名
        String username = "xxx";
        // SFTP登录密码
        String password = "xxxxx";
        JSch jsch = new JSch();
        Session session = null;
        ChannelSftp channelSftp = null;
        try {
            session = jsch.getSession(username, host, port);
            session.setPassword(password);
            // 设置StrictHostKeyChecking为no,避免第一次连接时会提示确认主机指纹信息
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();
            channelSftp = (ChannelSftp) session.openChannel("sftp");
            channelSftp.connect();
            // 切换到要操作的文件夹路径
            channelSftp.cd(RECORD_DIR);
            Vector<ChannelSftp.LsEntry> fileList = channelSftp.ls("./*");
            for (int i=0; i < fileList.size(); i++) {
                ChannelSftp.LsEntry entry = fileList.elementAt(i);
    
                if (!entry.getAttrs().isDir()) {

                    InputStream inputStream = channelSftp.get(entry.getFilename());
  
                    File file = new File(SAVE_DIR + "/local_directory/");
                    if (!file.exists()){
                        file.mkdirs();
                    }
                    String filePath = file +File.separator+ entry.getFilename();
                    OutputStream outputStream = new FileOutputStream(filePath);
                    byte[] buffer = new byte[1024];
                    int bytesRead;
                    while ((bytesRead = inputStream.read(buffer)) != -1) {
                        outputStream.write(buffer, 0, bytesRead);
                    }
       
                    inputStream.close();
                    outputStream.flush();
                    outputStream.close();
                }
                //获取完成删除文件
                //channelSftp.rm(entry.getFilename());
            }
        } catch (JSchException | SftpException  | IOException e) {
            e.printStackTrace();
        } finally {
            if (channelSftp != null && channelSftp.isConnected()) {
                channelSftp.disconnect();
            }
            if (session != null && session.isConnected()) {
                session.disconnect();
            }
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260229.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!