如何在Java中pipe理Linux文件权限

有没有任何机制来获取和设置文件/目录权限

例如,我想以shell的方式显示一个文件的许可:

-rwxr-xr-- 

有没有可能使用Java来做到这一点?

  • 我知道File类中有一些方法可以知道文件canExecutecanReadcanWrite ,但是AFAIK这个信息仅适用于当前用户。 我需要知道整个八进制数,例如755,所以我需要从用户,组和其他人那里得到它。
  • 我知道Java7带来Posix操作,但是如何使用更小的JRE来实现呢?
  • 我不想使用像lschmod这样的命令。

提前致谢。

Solutions Collecting From Web of "如何在Java中pipe理Linux文件权限"

如果你可以使用外部库,有几个:

  • JPosix
  • Java的Posix
  • JNR,POSIX

如果整个库看起来很麻烦,那么创建一个调用lstat C函数并返回访问模式的JNI包装需要大约10分钟的时间。 这里有一个教程, 为isattyttyname函数创建这样一个包装器 。

正如你所说,在Java7中,JVM支持它,所以你可以保证在所有操作系统中都可以轻松地完成这个任务(因为JVM的实现需要照顾它)。 在Java7下,你必须使用你想支持的每个操作系统的本地库。 这可能比执行chmod更脏