Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否有方法通过Java中的VFS设置远程文件夹的权限?

是否有方法通过Java中的VFS设置远程文件夹的权限?
EN

Stack Overflow用户
提问于 2014-07-18 05:32:17
回答 1查看 2.8K关注 0票数 0

我创建一个XML和一个ZIP文件,并通过SFTP将它们上传到服务器。文件夹结构如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/
|
|--/incoming
       |
       |--/<hash>
             |
             |-- file.xml
             |-- file.zip

<hash>文件夹是在我上传XML和ZIP时创建的,我需要这个文件夹具有777的权限。

据我所知,我无法通过Java中的VFS更改已经创建的文件夹的权限。当时我尝试的是在本地创建该文件夹,给它777,并将其与XML和ZIP一起上传。

我的代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
File fUploadDir = new File(uploadDir);
fUploadDir.mkdir();

fUploadDir.setReadable(true, false);
fUploadDir.setWritable(true, false);
fUploadDir.setExecutable(true, false);

// Create and add ZIP and XML files...
// ...

StandardFileSystemManager manager = new StandardFileSystemManager();

// Initializes the file manager
manager.init();

File file = new File(pathToFolder);

// Setup our SFTP configuration
FileSystemOptions opts = new FileSystemOptions();
SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 10000);

String sftpUri = "sftp://" + userId + ":" + password + "@" + serverAddress + "/" + remoteDirectory;

// Create local file object
FileObject localFile = manager.resolveFile(fUploadDir.getAbsolutePath());

// Create remote file object         
FileObject remoteFile = manager.resolveFile(sftpUri, opts);

// Copy local file to sftp server
remoteFile.copyFrom(localFile, Selectors.SELECT_SELF_AND_CHILDREN);

当我执行此代码时,XML和ZIP将被上载,而不是目录,因此SFTP服务器上的结构如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/
|
|--/incoming
       |
       |-- file.xml
       |-- file.zip

如何获得具有权限的文件夹( 777 )?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-21 04:31:40

我已经改变了权限。我的代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
StandardFileSystemManager manager = new StandardFileSystemManager();

String serverAddress = Config.getProperty("SFTP.SERVER.URL");
String userId = Config.getProperty("SFTP.SERVER.USERID");
String password = Config.getProperty("SFTP.SERVER.PASSWORD");
String remoteDirectory = Config.getProperty("SFTP.SERVER.REMOTEPATH");

JSch jsch = new JSch();

Session session = jsch.getSession(userId, serverAddress, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");                

session.connect();

Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp cSftp = (ChannelSftp) channel;

// check if the file exists
String filepath = localDirectory + File.separator + fileToFTP;
File file = new File(filepath);
if (!file.exists()) {
  logger.error(filepath + " existiert nicht.");
  throw new RuntimeException("Error. Local file not found");
}

// Initializes the file manager
manager.init();

// Setup our SFTP configuration
FileSystemOptions opts = new FileSystemOptions();
SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 10000);

// Create the SFTP URI using the host name, userid, password, remote path and file name
String sftpUri = "sftp://" + userId + ":" + password +  "@" + serverAddress + "/" + remoteDirectory + "/" + hash + "/" + fileToFTP;

// Create local file object
FileObject localFile = manager.resolveFile(file.getAbsolutePath());

// Create remote file object         
FileObject remoteFile = manager.resolveFile(sftpUri, opts);

// Copy local file to sftp server
remoteFile.copyFrom(localFile, Selectors.SELECT_SELF);

// Set file permissions to 777.
// 511 is the decimal representation for octal 777.
cSftp.chmod(511, remoteDirectory + "/" + hash);

如您所见,我仍然使用VFS,但只用于文件传输。我已经创建了ZIP文件,并将其上传到SFTP服务器到目录incoming/<hash>中。如果目录<hash>还不存在,VFS将创建它。上传文件后,我使用JSch更改目录JSch的文件权限。效果相当顺利。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24826276

复制
相关文章
MySQL远程访问权限的设置
今儿有位同事提出,一套MySQL 5.6的环境,从数据库服务器本地登录,一切正常,可是若从远程服务器访问,就会报错,
bisal
2019/01/29
4.4K0
linux文件夹权限777怎么设置,Linux:设置文件夹权限之777的含义[通俗易懂]
今天面试的时候一不小心就给自己挖坑了,说使用过的Linux命令时,我说了一个 mkdir -m 777 文件夹名称——创建文件夹及授予权限,然后就被问:
全栈程序员站长
2022/11/01
13.8K0
Windows设置文件夹权限
Windows权限报错相关问题可以通过这个解决方法: 1 文件夹右键 -- 属性 : 2 安全 -- 编辑: 3 添加 everyone : 4 everyone的权限修改为 完全控制: 5
浩Coding
2019/07/03
7.6K0
Java中的RMI(远程方法调用)
RMI(Remote Method Invocation,远程方法调用)是从java1.1开始实现的,它大大增强了Java开发分布式应用的能力。RMI对接口有着强烈的依赖,在需要创建一个远程对象的时候,我们通过传递一个接口来隐藏基层的实施细节,所以客户得到远程对象的一个句柄时,它们真正得到的是接口句柄,然后本地代码通过接口操作远程对象。通过RMI编写程序可以非常方便的实现分布式Java应用程序。
用户7886150
2020/12/18
1.6K0
windows IIS权限设置的方法
  windows IIS权限经典设置教程根据最新的黑客攻击方法显示,如果在IIS的站点属性打开了“写入”权限,则被黑是轻而易举的事。而一般在我们使用时,要求大家打开网站所在文件夹的“写入”权限,很多用户以为是在IIS中打开,这是错误的,这样做的结果就是让黑客利用写入权限上传任意文件。IIS中的“写入权限”则一定要关闭!这样的设置已经可以确保数据库是可以更新,可以生成HTML,可以刷新JS文件等所有正常操作。
会长君
2023/04/26
3.5K0
MySQL8.0设置远程访问权限方法学习
安装了mysql 8.0.11 之后本地可以登录,但是远程第三方工具无法连接,防火墙已经放通的,
用户1289394
2018/12/29
4.7K0
Ubuntu 文件文件夹查看权限和设置权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
用户5005176
2021/08/25
13.3K0
通过 JS 判断页面是否有滚动条的简单方法
前言 最近在写插件的过程中,需要使用 JS 判断是否有滚动条,搜了一下,大致方法都差不多,但都有些啰嗦,代码不够简洁。最终通过参考不同方法,写了一个比较简单的方法。在判断滚动条的同时也需要计算滚动条的
叙帝利
2018/01/17
8.4K0
通过 JS 判断页面是否有滚动条的简单方法
PostgreSQL - 允许远程访问的设置方法
上边的第7行是新添加的内容,表示允许网段192.168.1.0上的所有主机使用所有合法的数据库用户名访问数据库,并提供加密的密码验证。
雨临Lewis
2022/01/11
7.4K0
通过SSHFS远程挂载文件夹,方便远程coding!
很多情况下,从服务器传输文件会得很麻烦。想象一下开发使用场景,您正本地为服务器编写软件,并自己将脚本重复上传到服务器进行测试。这可能会变得非常麻烦。但是,有一种方法可以将VPS文件系统挂载到本地计算机上,这样您就可以动态地进行更改并将您的服务器的文件。在本文中,我们将向您展示如何做到这一点。
黑色技术
2018/07/27
27K0
Java中垃圾收集的方法有哪些?
【玩转 GPU】AI绘画、AI文本、AI翻译、GPU点亮AI想象空间-腾讯云开发者社区-腾讯云 (tencent.com)
疯狂的KK
2023/07/12
1880
Java中垃圾收集的方法有哪些?
java中的List记录是否完全匹配方法
===================================================
Hongten
2018/09/13
1.4K0
java中的List记录是否完全匹配方法
MySQL8.0设置远程访问权限
查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。
拓荒者
2019/03/14
3.7K0
MySQL8.0设置远程访问权限
上一篇文章讲解了重置 MySQL 的密码,有同学反馈无法程连接到数据库,这是因为 MySQL 安装完成后只支持 localhost 访问,我们必须设置一下才可以远程访问,另外还有一些 MySQL 8.0 连接时的一些问题,本文也会一并进行讲解如何解决。
程序员飞飞
2020/02/29
23.4K0
Linux远程连接的方法有哪些
这篇文章主要讲解了“Linux远程连接的方法有哪些”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。
会长君
2023/04/25
6.9K0
MySQL 数据库设置远程权限
设置访问单个数据库权限 设置用户名为 root,密码为空,可以访问数据库 test mysql>grant all privileges on test.* to 'root'@'%'; 设置访问全部数据库权限 设置用户名为 root,密码为空,可以访问所有数据库 mysql>grant all privileges on *.* to 'root'@'%'; 设置指定用户名访问权限 指定用户名为 liuhui,密码为空,可以访问所有数据库 mysql>grant all privileges on *.*
zucchiniy
2019/10/30
7.9K0
点击加载更多

相似问题

在文件夹结构中是否有快速查找权限(特定用户的权限)的方法?

12

Java中的VFS sqlite

10

在Java中,是否有一种通过区域设置获得带有后缀的日期的方法?

11

无法通过java代码更改文件夹的权限

20

在Windows中通过PHP设置文件夹权限

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文