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

复制
相关文章
javaFx 改变stage的标题条的图标
原文来自:http://stackoverflow.com/questions/10275841/how-to-change-the-icon-on-the-title-bar-of-a-stage-in-java-fx-2-0-of-my-applicat/15206407#15206407
明明如月学长
2021/08/27
1.1K0
从ajax获取参数到控制器Laravel
route Route::get('search', 'ShowstaffController@search'); 接收变量
双面人
2020/02/17
1.2K0
JavaFX 简介
本文介绍了JavaFX技术,并基于JavaFX编写了一个简单的图形界面程序。通过使用JavaFX,可以大大简化Java应用程序的开发过程,提高开发效率。同时,JavaFX也提供了一些常用的设计器,如SceneBuilder,可以方便地创建JavaFX应用程序。
乐百川
2018/01/09
5.8K0
JavaFX 简介
swift 获取控制器
得到view的控制器 /** view 获取它的控制器 */ public func viewController()->UIViewController? {
星宇大前端
2019/01/15
1.5K0
如何在JSP中格式化时间
在将后台数据传回前台的时候直接传输date属性的变量不进行格式化就会产生这种情况。 若是使用的是jsp则可以使用专门进行格式化的JSTL标签。 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 因为是国际化标签库所以不止可以进行日期格式化还可以实现国际化等功能,但现在使用他的情况只使用过它的日期格式化功能 <fmt:formateDate>
雪地二货
2018/09/18
1.8K0
JavaFX+Jfoenix 学习笔记(四)–MenuBar菜单栏
菜单最基本的作用就是单击做一些事情这是要用到单击事件:setOnAction(EventHandler<ActionEvent> value)
全栈程序员站长
2022/11/17
2.7K0
JavaFX+Jfoenix 学习笔记(四)–MenuBar菜单栏
Using JavaFX UI Controls 12 Table View
原文链接地址:http://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJAGAAEE
明明如月学长
2021/08/27
11.4K0
Stage模型和FA模型获取Context的方式
Context模块提供了ability或application的上下文的能力,包括允许访问特定于应用程序的资源、请求和验证权限等。获取context方式如下代码所示:
徐建国
2023/02/23
1K0
Stage模型和FA模型获取Context的方式
JavaFX入门(四):JavaFX布局(一)
说道GUI编程一定要谈到布局,JavaFX内置了大量的布局控件提供给我们使用。其实,JavaFX的布局控件和界面元素控件都是继承自javafx.scene.layout.Region类。我们这里只看布局控件类。布局控件我们在界面上一般是看不到的,它一个容器用于放置其它可视的界面元素控件。(JavaFX在线API文档:JavaFX8 API Online) JavaFX布局控件的类图如下:
卡尔曼和玻尔兹曼谁曼
2019/01/22
11.9K1
JavaFX入门(四):JavaFX布局(一)
JavaFX入门(二):JavaFX和FXML
在我的JavaFXML系列博客第一篇《JavaFX入门(一):我的第一个JavaFX程序 》中我们用纯Java代码写了一个很简单的JavaFXML程序,这一节中我们使用FXML编写程序界面,然后用Java书写后台逻辑完成上一节中的程序,实现相同的功能。
卡尔曼和玻尔兹曼谁曼
2019/01/22
8.8K0
JavaFX入门(二):JavaFX和FXML
[Spark源码剖析] DAGScheduler划分stage划分stage源码剖析
在DAGScheduler内部通过post一个JobSubmitted事件来触发Job的提交
codingforfun
2018/08/24
8260
[Spark源码剖析] DAGScheduler划分stage划分stage源码剖析
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
最近在项目开发中,由cs开发的exe的程序,需要自动升级,该exe程序放在linux下,自动升级时检测不到该exe程序的版本号信息,但是我们客户端的exe程序需要获取服务器上新程序的版本号信息。最后由我用java实现linux上exe文件的版本号读取功能。下面是详细代码:
业余草
2019/01/21
6K0
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
Using JavaFX UI Controls 18 超链接
原网页地址:http://docs.oracle.com/javafx/2/ui_controls/hyperlink.htm#CIHGADBG
明明如月学长
2021/08/27
1.5K0
javaFX(二)-使用gradle+jdk14创建javafx程序
在上一篇文章中,我们一起学习了jlink和jdk14的模块化. 在本篇文章中,我们一起来学习gradle来新建一个javafx的Hello World 程序.
微笑的小小刀
2020/05/28
4.3K0
二维码生成小工具,采用javafx框架tornadofx实现界面开发
[3zqf7zy13o.gif] import javafx.application.Application import javafx.beans.property.SimpleObjectProperty import javafx.embed.swing.SwingFXUtils import javafx.scene.image.Image import javafx.scene.image.WritableImage import tornadofx.* import javax.imageio.
用户6167008
2019/09/11
1.5K0
二维码生成小工具,采用javafx框架tornadofx实现界面开发
六种方式,教你在SpringBoot初始化时搞点事情!
在实际工作中经常需要在项目启动时做一些初始化的操作,比如初始化线程池、提前加载好加密证书.......
用户1263954
2021/12/02
8510
六种方式,教你在SpringBoot初始化时搞点事情!
JavaFX之Scene Builder的使用(开发一款GUI小工具原来这么简单)
首先声明一下,Java的强项并不在GUI上,现在是web的天下,博主发此篇文章仅是个人兴趣,如果您是学Java开发的,业余想做GUI小工具,可以选择使用JavaFX。如果需要开发企业级应用,推荐还是用qt或者wpf那些,用Electron也是很好的选择。
VIBE
2022/11/22
11.5K0
JavaFX之Scene Builder的使用(开发一款GUI小工具原来这么简单)
JavaFx-Button
.button1 { -fx-font: 22 arial; -fx-base: #b6e7c9; }
shengjk1
2021/03/02
4.9K0
JavaFx-Button
躁!DJ 风格 Java 桌面音乐播放器
HelloGitHub 推出的《讲解开源项目》系列,今天给大家带来一款开源 Java 版桌面 DJ 音乐播放器项目——XR3Player,它强大的功能和炫酷的展示效果,你肯定会喜欢上它的!
HelloGitHub
2021/05/14
3.8K0
点击加载更多

相似问题

如何从控制器访问JavaFx Stage?

20

如何在JavaFX中获取stage的关闭事件?

32

无法初始化类javafx.stage.screen

10

JavaFX FileChooser.showOptionDialog( Stage )从其他类获取舞台

10

如何使JavaFX stage透明(仅限Stage)

134
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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