最近对接分账工作需要上传分账文件到指定sftp服务器,在给sftp上文件夹赋权是遇到一个问题;
具体是ChannelSftp的chmod(int permissions, String path)方法,该方法第一个参数作用是设定文件夹访问权限,需要将 10进制 的权限数值转为 8进制 写入。
代码:
1 public class SftpChmodDemo{ 2 3 public static void main(String[] args) throws ClassNotFoundException { 4 String userName = "username"; 5 String password = "password"; 6 String ip = "localhost"; 7 int port = 22; 8 String path = "/user"; 9 10 Session session = null; 11 Channel channel = null; 12 try { 13 session = new JSch().getSession(userName, ip, port); 14 if (session == null) { 15 throw new Exception("session is null"); 16 } 17 session.setPassword(password); 18 session.setConfig("StrictHostKeyChecking", "no"); 19 session.connect(3000000); 20 channel = session.openChannel("sftp"); 21 channel.connect(3000000); 22 ChannelSftp sftp = (ChannelSftp) channel; 23 // 设定777权限,转为8进制放入chmod中 24 sftp.chmod(Integer.parseInt("777", 8), path); 25 // sftp.chmod(Integer.parseInt("755", 8), path); 26 // sftp.chmod(Integer.parseInt("775", 8), path); 27 28 } catch (Exception e) { 29 // TODO: handle exception 30 } finally { 31 if (null != session) { 32 session.disconnect(); 33 } 34 if (null != channel) { 35 channel.disconnect(); 36 } 37 } 38 } 39 }
然后查看文件夹属性,赋权成功了!
贴一张文件访问权限图,根据需要赋权:
最后,感谢大家访问,不正确的地方欢迎留言!