java根据服务器(linux)端ip+文件路径将服务器端文件下载到本地

这篇具有很好参考价值的文章主要介绍了java根据服务器(linux)端ip+文件路径将服务器端文件下载到本地。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

所需jar包,及下载地址

jsch:Maven Repository: com.jcraft » jsch » 0.1.55 (mvnrepository.com)​​​​​

 文章来源地址https://www.toymoban.com/news/detail-515549.html

创建 DownloadDirectoryFromLinux 工具类,用来下载文件

public class DownloadDirectoryFromLinux {
    public void main() {
        String hostname = "linux的ip地址(10.***.*.***)";
        int port = 端口号(22);
        String username = "用户名(root)";
        String password = "密码";
        String remoteDirPath = "linux需要下载的文件目录(/root/test)";
        String localDirPath = "保存到本地的文件目录(D:\\Desktop\\test\\)";

        JSch jsch = new JSch();
        Session session = null;
        Channel channel = null;
        ChannelSftp channelSftp = null;

        try {
            session = jsch.getSession(username, hostname, port);
            session.setPassword(password);
            Properties config = new Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.setTimeout(30000);
            session.setServerAliveInterval(5000);
            session.connect();

            channel = session.openChannel("sftp");
            channel.connect();
            channelSftp = (ChannelSftp) channel;
            channelSftp.cd(remoteDirPath);

            
            Vector<ChannelSftp.LsEntry> files = channelSftp.ls(remoteDirPath);
            String[] fileNames = new String[files.size()];
            for (int i = 0; i < files.size(); i++) {
                fileNames[i] = files.get(i).getFilename();
            }
            int count = 0;
            //遍历remoteDirPath 下的每一个文件
            for (String fileName : fileNames) {
                count+=1;
                if (count>=3){
                    //如果把remoteDirPath 当作一级目录,那remoteFilePath 就是第二级目录
                    String remoteFilePath = remoteDirPath + "/" + fileName;
                    String localFilePath = localDirPath + fileName;
                    //channelSftp.get()方法不能远程下载目录,
                    //channelSftp.get(remoteFilePath, localFilePath);
                    //上面这样会报错,具体可以查看源码
                    
                    //下面这个方法遍历第二级目录下的所有文件
                    downloadDirectory(remoteFilePath,localFilePath,channelSftp);
                }
            }
            System.out.println("文件下载完成");
        } catch (JSchException | SftpException e) {
            e.printStackTrace();
        } finally {
            if (channelSftp != null) {
                channelSftp.disconnect();
            }
            if (channel != null) {
                channel.disconnect();
            }
            if (session != null) {
                session.disconnect();
            }
        }
    }

    
    private static void downloadDirectory(String remoteDirPath, String localDirPath, ChannelSftp sftp) throws SftpException {
        Vector<ChannelSftp.LsEntry> files = sftp.ls(remoteDirPath);
        for (ChannelSftp.LsEntry file : files) {
            String str = file.getFilename().toString();
            String type = str.substring(str.lastIndexOf(".") + 1);
            //我这里只保存后缀名为svg和xml的文件
            if (type.equals("svg") || type.equals("xml")){
                if (!file.getAttrs().isDir()) {
                    File file1 = new File(localDirPath);
                    if (!file1.exists()){
                        file1.mkdirs();
                    }
                    String linuxFilePath = remoteDirPath + "/" + file.getFilename();
                    String localFilePath = localDirPath + "\\" + file.getFilename();
                    //下载文件
                    sftp.get(linuxFilePath,localFilePath);
                } else if (!file.getFilename().equals(".") && !file.getFilename().equals("..")) {
                    File newDir = new File(localDirPath + "\\" + file.getFilename());
                    newDir.mkdirs();
                    downloadDirectory(remoteDirPath + "/" + file.getFilename(), newDir.getAbsolutePath(), sftp);
                }
            }
        }
    }
}

到了这里,关于java根据服务器(linux)端ip+文件路径将服务器端文件下载到本地的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中将本服务器的文件拷贝到另一个服务器(Windows to Linux)

    在Java中,将文件从Windows服务器复制到Linux服务器,常用的方式是使用SSH进行安全的文件传输。Java有一个名为 JSch 的库,可以用于SSH连接和操作。 首先,你需要将 JSch 添加到你的项目依赖中。如果你使用的是Maven,你可以添加以下依赖: 然后,你可以使用以下代码将文件从

    2024年02月11日
    浏览(49)
  • js获得相对路径文件,并上传到服务器

    已知一个相对路径文件,如何使用js将该文件读取为File格式,最后上传到服务器中呢。 代码 结果 File() 构造器创建新的 File 对象实例(文件对象) 语法 参数 bits 一个包含 ArrayBuffer , ArrayBufferView , Blob ,或者 DOMString 对象的 Array — 或者任何这些对象的组合。这是 UTF-8 编码的文

    2024年01月20日
    浏览(48)
  • 功能需求-根据页面生成pdf,pdf不需要下载只需把文件流上传到服务器

    根据自身当下技术的水平和实际情况,做一个简单的记录。 在项目中有采购合同和销售合同,这些合同新建好之后都需要有人去审核,审核通过后需要把合同生成一个pdf文件然后后端给保存起来 在项目中有采购合同和销售合同,这些合同新建好之后都需要有人去审核,审核

    2024年02月13日
    浏览(47)
  • 查询服务器tns文件路径,oracle数据库tns配置方法详解

    Oracle中TNS的完整定义:transparence Network Substrate透明网络底层, 监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器。 上图中的CGDB和STDCG就是对应的TNS,HOST是指向数据库服务器的IP,当然局域网内用计算机名称也是可以的。通过客户端Net Manager创建一个连接到数据

    2024年02月09日
    浏览(68)
  • 运维 | 查看 Linux 服务器 IP 地址

    大多数在操作 Linux 系统时,我们经常需要知道服务器的 IP 比便于后续的一系列操作,这时候有快速查看主机 IP 的命令行操作,能够有效的帮助我们 本章节主要记录一些常用查看服务器 IP 的命令,希望对大家有所帮助。 查看 Linux 服务器的 IP 地址的命令大体上有以下几种。

    2024年04月27日
    浏览(81)
  • JAVA如何获取服务器ip

    该方法返回的是默认的本地地址,可能是服务器上某个网络接口的IP地址,但不一定是我们期望获取的IP地址。 为了获取正确的IP地址,可以使用其他方法来获取服务器上所有的网络接口,并遍历每个网络接口来获取对应的IP地址。可以使用 NetworkInterface 类来实现此功能,如下

    2024年02月07日
    浏览(55)
  • 【Linux后端服务器开发】IP协议

    目录 一、IP协议概述 二、协议头格式 三、网段划分 四、IP地址的数量限制 五、路由 六、分片和组装 主机 :配有IP地址,但是不进行路由控制的设备 路由器 :即配有IP地址,又能进行路由控制 节点 :主机和路由器的总称 IP :将数据从A主机跨网络传输到B主机的能力,IP =

    2024年02月15日
    浏览(40)
  • java服务器获取ip 解读请求头 伪造ip

    目录 一、获取ip的代码 二、请求头解读 三、注意事项 市面上流传的JAVA/PHP服务器端获取客户端IP都是这样: X-Forwarded-For 这是一个 Squid 开发的字段,只有在通过了 HTTP 代理或者负载均衡服务器时才会添加该项。格式为X-Forwarded-For: client1, proxy1, proxy2,一般情况下,第一个ip为客

    2024年02月08日
    浏览(45)
  • 【linux】linux服务器判断域名、IP、端口、URL是否有效

    活动详情地址:话题挑战赛第2期 参赛话题地址:运维技术分享 在平时运维过程中,经常会遇到需要判断地址是否有效的情况,比如: 1、服务器是否通外网 2、第三方提供的IP、端口是否能够访问 3、对方域名是否能够访问 … 下面列举几种linux服务器常用的检测方式 ▶ 描述

    2024年02月01日
    浏览(74)
  • Java中获取当前服务器的IP地址

    获取ip的第一反应就是:使用InetAddress这个类:方法如下 可以知道此时获取到的服务器如果加了代理方式就是获取到代理的地址,一般会使用netty代理转发。 我的解决死方法(方法是死的,但是能解决问题^_^) 在nacos的配置里面新建一个

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包