当前位置: 首页 > 面试题库 >

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

慎旭尧
2023-03-14
问题内容

在Java中,我正在动态创建一组文件,并且想更改linux / unix文件系统上这些文件的文件许可权。我希望能够执行的Java等效项chmod。那可能是Java 5吗?如果是这样,怎么办?

我知道在Java 6中File对象具有setReadable()/ setWritable()方法。我也知道我可以进行系统调用来做到这一点,但是如果可能的话,我想避免这种情况。


问题答案:

作为“新” New IO工具(NIO.2)的一部分,Java 7中提供了对文件属性的完全控制。例如,POSIX权限可以在与现有的文件设置setPosixFilePermissions(),在文件创建与类似的方法或原子createFile()newByteChannel()

你可以使用来创建一组权限EnumSet.of(),但是helper方法PosixFilePermissions.fromString()将使用一种常规格式,该格式对于许多开发人员而言更易读。对于接受的API FileAttribute,你可以使用来包装权限集PosixFilePermissions.asFileAttribute()

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

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



 类似资料:
  • 在Java中,我动态地创建一组文件,我希望在Linux/UNIX文件系统中更改这些文件的文件权限。我希望能够执行的Java等价物。这可能是Java5吗?如果是,怎么做? 我知道在Java6中,对象有/方法。我也知道我可以通过一个系统调用来实现这一点,但如果可能的话,我希望避免这样做。

  • 这里有个简单的问题。我有一个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中: 除此以外: 还必须为声明。