在Java中获取文件创建者/所有者属性

时间:2014-12-16 20:28:32

标签: java posix

我正在尝试读取文件列表并找到创建该文件的用户。使用* nix系统,您可以执行类似

的操作
Map<String, Object> attrs = Files.readAttributes(Paths.get(filename), "posix:*");

但是,在Windows系统上尝试时,我收到错误,因为Windows无法访问POSIX属性。你可以得到&#34;常规&#34; (非POSIX)属性通过这样做:

attrs = Files.readAttributes(Paths.get(filename), "*");

但该文件的创建者未包含在该列表中。

有没有办法找出谁在Windows上运行的Java程序中创建了文件?

2 个答案:

答案 0 :(得分:4)

我相信您可以使用Files.getOwner(Path, LinkOption...)来获取当前所有者(也可能是创建者)

Path path = Paths.get("c:\\path\\to\\file.ext");
try {
    UserPrincipal owner = Files.getOwner(path, LinkOption.NOFOLLOW_LINKS);
    String username = owner.getName();
} catch (IOException e) {
    e.printStackTrace();
}
  

如果它是支持FileOwnerAttributeView文件系统,则应该有效。此文件属性视图提供对文件属性的文件属性的访问权限

答案 1 :(得分:0)

您可以使用FileOwnerAttributeView获取 所有者 信息:

Path filePath = Paths.get("your_file_path_goes_here");
FileOwnerAttributeView ownerInfo = Files.getFileAttributeView(filePath,  FileOwnerAttributeView.class);
UserPrincipal fileOwner = ownerInfo.getOwner();
System.out.println("File Owned by: " + fileOwner.getName());