news 2026/7/4 5:24:52

批量处理远程共享目录中的特定类型文件(如 .hex、.csv 等)。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
批量处理远程共享目录中的特定类型文件(如 .hex、.csv 等)。

技术选型

组件说明
协议SMBv2 / SMBv3(推荐,安全性更高)
Java 库jcifs-ng(JCIFS 的活跃维护分支,支持现代 SMB 协议)
认证方式NTLM(Windows 域或本地账户)
开发语言Java 8+

1.2前提条件

✅ 前提条件(必须满足)

在目标服务器173.16.1.152上:

  1. 已共享D:\jenkins文件夹(这里改成你需要访问的共享目录
    • 共享名建议为jenkins→ 访问路径:\\173.16.1.152\jenkins目录名称改成自己相应即可
  2. 你有一个有写权限的 Windows 账户(如admin/deploy
  3. 防火墙允许 445 端口(默认 SMB 端口)
  4. “密码保护的共享”已关闭(或你知道正确凭据)

💡 测试:在winds服务器上按Win+R,输入
\\173.16.1.152\jenkins
看是否能打开并写入文件。

2、代码实现

代码执行流程示意图:

2.1、添加依赖

<dependency> <groupId>eu.agno3.jcifs</groupId> <artifactId>jcifs-ng</artifactId> <version>2.1.9</version> <!-- 请使用最新稳定版 --> </dependency>

2.2 提供接口核心代码

这部分主要是提供接口,和有些参数校验

@ApiOperation("只下载目录下的 .hex 文件并下载") @PostMapping("/getJenkinsHexData") public R<String> downloadSmbHexFiles(@RequestBody SmbDownloadRequestVo request) { // 1. 路径安全检查(防止路径遍历) if (request.getLocalBaseDir() != null && (request.getLocalBaseDir().contains("..") || request.getLocalBaseDir().contains("/"))) { throw new UserException("无效的本地基础目录路径"); } // // 2. 从环境变量获取密码(生产环境必须) // String safePassword = System.getenv("SMB_PASSWORD"); // if (safePassword == null) { // throw new UserException("未设置SMB_PASSWORD环境变量"); // } // 3. 验证请求参数 if (request.getSmbHost() == null || request.getShareName() == null || request.getUsername() == null) { throw new UserException("缺少必需参数:smbHost、shareName、username"); } try { // 4. 使用安全密码执行下载 WindowsDownloaderHexFile.downloadHexFiles( request.getSmbHost(), request.getShareName(), request.getRemotePath(), request.getUsername(), request.getPassword(), request.getLocalBaseDir(), true, request.getFileExtension() ); return R.ok("文件下载成功"); } catch (Exception e) { return R.fail("文件下载失败"); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 6:27:52

OpenGL学习笔记-05-着色器-数据类型/输入输出/uniform

数据类型基本类型&#xff1a;向量怎么写&#xff1a; vecn: n为一个整数&#xff0c;通常表示有n个float分量的向量示例&#xff1a;vec3 Vec(0.1, 0.2, 0.3); 表示这是一个有3个float分量的向量&#xff0c;向量名称为VecVec.x、Vec.y、Vec.z,分别表示第一个、第二个、第三个…

作者头像 李华
网站建设 2026/7/4 9:35:33

基于OpenCV与YOLO的实时目标检测系统搭建指南

在计算机视觉项目中&#xff0c;想要快速实现一个实时、准确的目标检测系统&#xff0c;往往是许多同学做课程设计、毕业设计甚至实际项目时的第一个“拦路虎”。面对复杂的模型训练、繁琐的环境配置和晦涩的代码&#xff0c;很容易让人望而却步。本文将为你彻底解决这个问题&a…

作者头像 李华
网站建设 2026/7/3 23:57:14

Docker部署PostgreSQL

一、 说明系统 Ubuntu 24.04。PostgreSQL 版本 18。Docker 版本 29.1.3。Docker Compose 版本 v5.0.0。二、部署 目录结构 /www/common# tree -a -L 3 $(pwd) /www/common ├── .env ├── docker-compose.yml ├── mysql │ ├── conf.d │ │ └── custome.co…

作者头像 李华
网站建设 2026/7/4 21:31:54

Playwright混沌工程实战:构建AI增强的韧性Web自动化测试体系

1. 项目概述&#xff1a;当Web自动化遇上混沌工程 最近在折腾一个大型电商项目的自动化测试体系时&#xff0c;我遇到了一个经典难题&#xff1a;测试脚本在开发环境跑得飞快&#xff0c;一到预发布或生产环境&#xff0c;就时不时地“抽风”。网络抖动一下&#xff0c;某个API…

作者头像 李华
网站建设 2026/7/4 6:30:26

【LeetCode】反转字符串

欢迎来到李耶的频道【LeetCode面试题】。反转字符串 题目 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 输入…

作者头像 李华
网站建设 2026/7/5 3:37:39

京东开源实时视频视觉语言交互模型:全栈方案解析与落地实践

你有没有遇到过这样的场景&#xff1a;想从一段视频里快速找到某个特定动作发生的精确时间点&#xff0c;或者让AI帮你分析一段监控录像里“穿红色衣服的人在第几分钟走向了哪个方向”&#xff1f;过去&#xff0c;这类需求往往需要你手动逐帧查看&#xff0c;或者依赖一套复杂…

作者头像 李华