channelSftp.mkdir() 创建不了文件夹、没有权限

devtools/2024/10/23 14:53:43/

SFTP 不支持创建多级目录,可以循环创建

java">String[] folders = path.split("/");
// 使用绝对路径的根目录,确保每次都从根目录开始创建
String basePath = "/"; // 设置你想要的根路径,如 "/home/user"try {channelSftp.cd(basePath); // 确保每次操作从根目录开始
} catch (SftpException e) {throw new RuntimeException("无法切换到根目录: " + basePath, e);
}String currentPath = basePath; // 初始化为根路径for (int i = 3; i < folders.length; i++) {String folder = folders[i];if (folder.equals("null") || folder.isEmpty()) continue; // 跳过空文件夹或根路径currentPath += "/" + folder; // 拼接完整路径try {channelSftp.cd(currentPath); // 尝试进入完整路径} catch (SftpException e) {// 如果目录不存在,则创建try {channelSftp.mkdir(currentPath); // 创建新目录channelSftp.cd(currentPath);    // 进入新创建的目录} catch (SftpException mkdirException) {throw new RuntimeException("无法创建目录: " + currentPath, mkdirException);}}log.info("目录已创建或存在: {}", currentPath);
}

确保每次循环创建目录之前,channelSftp 返回到根目录(或你指定的基准路径),从根目录开始创建目录结构。

关键点:

  1. 根目录重置:每次创建之前,确保从根目录(basePath)开始执行。这里使用 channelSftp.cd(basePath) 切换到根目录,避免遗留在之前的路径上。

  2. 完整路径创建:每次拼接 currentPath 时,使用完整路径(绝对路径),确保在每次 cd()mkdir() 操作时指向正确的目录。

  3. 日志输出和错误处理:保持日志输出,以便追踪每一步操作,并在出现问题时捕获异常,记录无法创建的目录。

注意事项:

  • basePath 可以是你希望的起始路径,通常为根目录 /,也可以是某个特定用户目录。
  • 避免只在某个子目录停留,否则在下次操作时,它不会自动回到根目录

http://www.ppmy.cn/devtools/128173.html

相关文章

Linux下升级安装ImageMagick

服务器系统为 Centos 1.删除旧版本 /usr/bin/convert 是 ImageMagick 工具集中 convert 命令的可执行文件 #确定已安装版本 convert --version# 对于基于RPM的系统&#xff0c;如Red Hat、CentOS rpm -qf /usr/bin/convert #根据返回的版本信息&#xff0c;卸载&#xff0…

全球云观察:SAP大中华区发展简史(1992-2024)

【全球云观察 &#xff5c; 科技热点关注】 引言 SAP的全称是System Applications and Products&#xff0c;成立于1972年&#xff0c;总部位于德国沃尔多夫市&#xff0c;是一家全球领先的企业应用软件提供商。‌SAP公司最初只有五个人&#xff0c;现已发展成为一家大型跨国企…

引进Menu菜单与新增验证上传图片功能--系统篇

我的迭代小系统要更新2点。一是后台需要引进一种导航&#xff0c;众多导航之中我选择了Menu菜单。二是上传图片接口需要新增验证上传图片环节。先看看更新2点后的效果 引进Menu菜单效果如下&#xff0c;这部分修改后台前端代码 引进Menu菜单后&#xff0c;Menu菜单的默认数据我…

Linux 之 fdisk 【磁盘分区管理】

删除分区 1.查看磁盘信息 lsblk 2.删除分区sdb硬盘下的所有分区 # 1 进入d的磁盘分区 fdisk /dev/sdb # 2 输入p查看磁盘的分区信息 # 3 输入d进入删除磁盘分区命令 # 4 选择要删除的分区号 重复3&#xff0c;4 全部删除 # 5 w 保存退出并生效操作信息 &#xff08;输入q…

常用分布的数学期望、方差、特征函数

文章目录 相关教程相关文献常用分布的数学期望&方差&特征函数定义事件域概率条件概率随机变量分布函数连续随机变量的概率密度函数数学期望离散随机变量连续随机变量 方差与标准差最大似然估计特征函数 不等式Chebyshev&#xff08;切比雪夫&#xff09;不等式 作者&am…

Linux中vim的三种主要模式和具体用法

Vim编辑器的三种主要模式 Vim编辑器具有三种主要模式&#xff0c;它们是&#xff1a; 1.命令模式&#xff08;Normal mode&#xff09;&#xff1a;这是Vim的默认模式&#xff0c;用于执行编辑命令、移动光标、删除文本、复制粘贴等操作。在这个模式下&#xff0c;按下键盘上的…

WebSocked基础

一. WebSocket 基本概念 WebSocket是什么&#xff1f; WebSocket 是基于 TCP 的一种新的应用层网络协议。它提供了一个全双工的通道&#xff0c;允许服务器和客户端之间实时双向通信。因此&#xff0c;在 WebSocket 中&#xff0c;浏览器和服务器只需要完成一次握手&#xff…

开发常见错误状态码

一些常见的 HTTP 状态码及其描述&#xff0c;这些状态码在后端开发中经常遇到。这些状态码分为几类&#xff1a;信息性状态码、成功状态码、重定向状态码、客户端错误状态码和服务器错误状态码。 信息性状态码 (1xx) 100 Continue&#xff1a;客户端应继续其请求。101 Switch…