当前位置: 首页 > 知识库问答 >
问题:

如何以编程方式更改文件权限?

梅玉堂
2023-03-14

在Java中,我动态地创建一组文件,我希望在Linux/UNIX文件系统中更改这些文件的文件权限。我希望能够执行chmod的Java等价物。这可能是Java5吗?如果是,怎么做?

我知道在Java6中,file对象setreadable()/setwritable()方法。我也知道我可以通过一个系统调用来实现这一点,但如果可能的话,我希望避免这样做。

共有1个答案

赏夕
2023-03-14

对于文件属性的完全控制可以在Java7中使用,这是“新的”新IO工具(NIO.2)的一部分。例如,可以使用setposixfilePermissions()对现有文件设置POSIX权限,或者使用createFile()newbytechannel()等方法在文件创建时自动设置POSIX权限。

您可以使用enumset.of()创建一组权限,但是helper方法PosixFilePermissions.FromString()将使用常规格式,许多开发人员更容易阅读。对于接受FileAttribute的API,可以用PosixFilePermissions.asfileAttribute()包装权限集。

Set<PosixFilePermission> ownerWritable = PosixFilePermissions.fromString("rw-r--r--");
FileAttribute<?> permissions = PosixFilePermissions.asFileAttribute(ownerWritable);
Files.createFile(path, permissions);

在早期版本的Java中,使用自己的本机代码或exec-ing命令行实用程序是常见的方法

 类似资料:
  • 问题内容: 在Java中,我正在动态创建一组文件,并且想更改文件系统上这些文件的文件许可权。我希望能够执行的Java等效项。那可能是Java 5吗?如果是这样,怎么办? 我知道在对象具有方法。我也知道我可以进行系统调用来做到这一点,但是如果可能的话,我想避免这种情况。 问题答案: 作为“新” New IO工具(NIO.2)的一部分,Java 7中提供了对文件属性的完全控制。例如,POSIX权限可以

  • 这里有个简单的问题。我有一个UIButton,currencySelector,我想通过编程更改文本。以下是我所拥有的: Xcode给了我一个错误“预期声明”。我做错了什么?我该如何更改按钮的文本?

  • 我使用下面的hack以编程方式更改homeAsupIndicator。 但这在大多数新手机(HTC One、Galaxy S3等)上都不起作用。是否有一种方法可以跨设备统一更改。我只需要在主屏幕上更改它。其他屏幕将具有默认屏幕。因此无法使用样式。xml

  • 我正在处理一个使用log4j2(使用log4j2.xml初始化参数)并加载记录器的应用程序。当应用程序运行时,我需要以编程方式重写一些参数,例如更改日志级别和滚动文件附加器属性。我可以使用以下方法更改日志级别: 现在我尝试使用RollingFile appender的属性来解决同样的问题。然而,我仍然停留在如何修改现有的RollingFile appender的属性上

  • 我已经读过一些关于颜色的线程,但所有这些线程都必须通过style.xml进行设置。 现在我用这个来确定颜色。 是否可以不使用XML,例如使用代码来更改SwitchCompat/Checkbox的颜色?

  • 问题内容: 这里的简单问题。我有一个UIButton,currencySelector,并且我想以编程方式更改文本。这是我所拥有的: Xcode给我错误“期望的声明”。我在做什么错,如何更改按钮的文本? 问题答案: 在Swift 3、4、5中: 除此以外: 还必须为声明。