嗨,我不知道如何validation用户是否属于Linux操作系统下使用java 7 nio库一个更多的组。
任何人都可以帮我解决这个问题吗?
您可以尝试读取文件/etc/group
。
我已经开发了一个类来轻松地查询这个文件:
public class UserInfo { public UserInfo() throws FileNotFoundException, IOException { this.group2users = new HashMap<>(); FileReader fileReader = new FileReader(groupsFilePath); BufferedReader groupsReader = new BufferedReader(fileReader); while(groupsReader.ready()) { try { String line = groupsReader.readLine(); String [] tokens = line.split(":"); String groupName = tokens[0]; Set<String> users = group2users.get(groupName); if(users == null) { users = new HashSet<String>(); group2users.put(groupName, users); } if(tokens.length>3) { for(String uStr: tokens[3].split(",")) users.add(uStr); } } catch (Exception e) { continue; } } groupsReader.close(); fileReader.close(); } public boolean belongs2group(String user, String group) { Set<String> groupRef = group2users.get(group); if(groupRef == null) return false; return groupRef.contains(user); } private String groupsFilePath = "/etc/group"; private Map<String, Set<String>> group2users; }
此代码映射/etc/group
文件并保留一个组的地图 – 用户设置。 我开发了一种查询方法( belongs2group
),但添加方法列出所有组和/或所有用户相当容易。
这段代码是用老式的主流java io-api编写的,但是我认为它可以很容易地适应nio。 让我知道如果你需要我来完成这一步。