使用ChannelSftp.chmod方法进行赋权的时候遇到的问题及解决.
第一次这样写的。
chmod(755,path);发现生成的文件权限为:363
第二次
chmod(775,path);发现生成的文件权限为:407
第三次
chmod(777,path);发现生成的文件权限为:411
天啊,这么会这样。无意间在项目中搜索chmod关键字,发现他们写的是
chmod(33277,path),生成的文件是:755
开始怀疑是进制问题........
最后发现
755(10进制)转成8进制是1363
775(10进制)转成8进制是1407
777(10进制)转成8进制是1411
难道我们传入的int会被转成8进制?
那好,我们这样做
755(8进制)转成10进制是493
775(8进制)转成10进制是509
777(8进制)转成10进制是511
第四次
chmod(493,path);发现生成的文件权限为:755
chmod(509,path);发现生成的文件权限为:775
chmod(511,path);发现生成的文件权限为:777
最后代码为:chmod(Integer.parseInt("775",8),path);生成的就是755权限
结果:传入的int会被转成8进制,我们需提前转成8进制
第一次这样写的。
chmod(755,path);发现生成的文件权限为:363
第二次
chmod(775,path);发现生成的文件权限为:407
第三次
chmod(777,path);发现生成的文件权限为:411
天啊,这么会这样。无意间在项目中搜索chmod关键字,发现他们写的是
chmod(33277,path),生成的文件是:755
开始怀疑是进制问题........
最后发现
755(10进制)转成8进制是1363
775(10进制)转成8进制是1407
777(10进制)转成8进制是1411
难道我们传入的int会被转成8进制?
那好,我们这样做
755(8进制)转成10进制是493
775(8进制)转成10进制是509
777(8进制)转成10进制是511
第四次
chmod(493,path);发现生成的文件权限为:755
chmod(509,path);发现生成的文件权限为:775
chmod(511,path);发现生成的文件权限为:777
最后代码为:chmod(Integer.parseInt("775",8),path);生成的就是755权限
结果:传入的int会被转成8进制,我们需提前转成8进制