Java jscape sftp上载保留文件权限
我正在使用Java jscape sftp上载保留文件权限,java,upload,ftp,sftp,Java,Upload,Ftp,Sftp,我正在使用jscape sftp传输文件 com.jscape.inet.sftp.Sftp Sftp sftpSession = null; // after the required step to connect // through SshParameters sftpSession.setDir(remotedirectory); sftpSession.upload(localFile, remoteFile); 现在,这段代码正在传输文件,这部分可以了。但远程计算机中的文件
jscape sftp
传输文件
com.jscape.inet.sftp.Sftp
Sftp sftpSession = null;
// after the required step to connect
// through SshParameters
sftpSession.setDir(remotedirectory);
sftpSession.upload(localFile, remoteFile);
现在,这段代码正在传输文件,这部分可以了。但远程计算机中的文件权限正在发生更改(正在变为644)
我看到下面的方法来更改远程文件的权限
com.jscape.inet.sftp.sftp.setFilePermissions(java.lang.String remoteFile,int permissions)
我的问题是,
方法是否仅以这种方式工作,在不保留权限的情况下上载文件com.jscape.inet.sftp.sftp.upload
- 有没有办法在不显式使用
方法的情况下保留权限李>setFilePermissions
您可以尝试使用getPermissions()方法获取本地文件的权限,并将其设置为远程文件。使用Java 7+可以做到这一点;当然,下面的代码假设与您的设置类似,它在两端都支持POSIX兼容的文件系统 诀窍是获取一个文件的POSIX文件权限集;这是通过以下方式实现的:
// "fileToCopy" here is a Path; see Paths.get()
Files.getPosixFilePermissions(fileToCopy)
这将返回一个集
,它实际上是一个枚举。使用以下技巧将枚举转换为整数:
private static int toIntPermissions(final Set<PosixFilePermission> perms)
{
int ret = 0;
for (final PosixFilePermission perm: PosixFilePermission.values()) {
if (perms.contains(perm))
ret++; // add 1
ret <<= 1; // shift by 1
}
return ret;
}
private static int to intpermissions(最终设置perms)
{
int-ret=0;
for(最终PosixFilePerm:PosixFilePermission.values()){
if(perms.contains(perm))
ret++;//添加1
ret
private static int toIntPermissions(final Set<PosixFilePermission> perms)
{
int ret = 0;
for (final PosixFilePermission perm: PosixFilePermission.values()) {
if (perms.contains(perm))
ret++; // add 1
ret <<= 1; // shift by 1
}
return ret;
}