我正在尝试读取文件列表并找到创建该文件的用户。使用* 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程序中创建了文件?
答案 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());