如何在Windows上使用Java移动文件继承新目录的ACL?

时间:2019-02-06 10:39:30

标签: java windows acl

在将移动文件从原始目录移动到Windows计算机上同一驱动器上的另一个目录后,移动的文件不会继承其新目录的ACL。

我有一个名为“ A:”的网络磁盘,在该磁盘中,我有一个名为“目录1”和“目录2”的目录。

A:/目录1

A:/目录2

我现在正在从中移动文件

A:/目录1 /文件夹1 (ACL所有权限仅适用于“组1”)

A:/目录2 /文件夹1 /文件夹2 /文件夹1 (ACL所有权限仅适用于“组2”,不适用于“组1”)

  • 我试图在堆栈溢出和其他站点上搜索解决方案。
  • 我尝试复制文件而不是移动文件。
  • 我尝试使用Java提供的ACL代码
  • 我尝试更改Windows设置,以便文件确实继承其新目录的ACL,并在手动移动文件后验证了此方法是否有效。

我当前使用的代码:

Files.move(pdfFile.toPath(), Paths.get(newFileWithoutExtension + ".pdf"), StandardCopyOption.REPLACE_EXISTING);
Files.move(txtFile.toPath(), Paths.get(newFileWithoutExtension + ".txt"), StandardCopyOption.REPLACE_EXISTING);

然后希望复制可能会触发ACL继承...

Files.copy(newPDfFile.toPath(), newPDfFile.toPath());
Files.copy(newTXTFile.toPath(), newTXTFile.toPath());

我希望在移动文件后,它只会获得该目标目录的新权限,因为“组1”中的文件将失去对该文件的所有权限,而“组2”中的文件将获得该文件的权限。

实际上,“第2组”现在在其自己的文件夹中有一个文件,可以访问,其中充满了无法打开的文件,因为这些文件仍设置为仅由“第1组”打开。

如何通过Java实现这一目标?我尝试研究ACL方法,但这些方法似乎是通用方法,我无法弄清楚如何从目录复制权限并将其应用于目标文件。

0 个答案:

没有答案