是否有用于读取UNIX/etc/group文件的Java包?

是否有用于读取UNIX/etc/group文件的Java包?,java,class,posix,Java,Class,Posix,我一直在互联网上搜寻一个Java包/类,它允许我解析UNIX/etc/group文件。虽然从零开始写这篇文章并不难,但我很惊讶没有发现已经存在的东西。有一个POSIX passwd类(请参阅),但我没有为/etc/group找到类似的类。这样的东西存在吗?Java是独立于机器的,所以我对此并不感到惊讶。你提到的课程不是标准的 我认为,同样的理由是向所有人隐藏/etc/group文件,这可以给我们一个线索,让我们理解为什么java没有提供它。java是机器独立的,所以我对此并不感到惊讶。你提到的课

我一直在互联网上搜寻一个Java包/类,它允许我解析UNIX/etc/group文件。虽然从零开始写这篇文章并不难,但我很惊讶没有发现已经存在的东西。有一个POSIX passwd类(请参阅),但我没有为/etc/group找到类似的类。这样的东西存在吗?

Java是独立于机器的,所以我对此并不感到惊讶。你提到的课程不是标准的


我认为,同样的理由是向所有人隐藏/etc/group文件,这可以给我们一个线索,让我们理解为什么java没有提供它。

java是机器独立的,所以我对此并不感到惊讶。你提到的课程不是标准的


我认为,与向所有人隐藏/etc/group文件的原因相同,可以为我们理解java不提供它的原因提供线索。

这是我的代码,Tobubeer更新了,我又更新了。他的书没有编译。缺少InvalidGroupException类。此外,未指定任何包。将空列表切换为emptyList(),以避免缺少参数化

package fileutils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class GroupReader2 {
    public static class InvalidGroupException extends Exception {
        private static final long serialVersionUID = 1L;

        public InvalidGroupException(String string) {
            super(string);
        }
    }

    public static GroupReader2 parseGroup(final String groupLine)
            throws InvalidGroupException {
        final String line;
        final String[] parts;

        if (groupLine == null) {
            throw new IllegalArgumentException("groupLine cannot be null");
        }

        line = groupLine.trim();

        if (line.startsWith("#") || line.isEmpty()) {
            return null;
        }

        parts = line.split(":");

        if (parts.length < 3) {
            throw new InvalidGroupException(groupLine
                    + "must be in the format of name:passwd:gid[:userlist]");
        }

        try {
            final GroupReader2 group;
            final String name;
            final String passwd;
            final int gid;
            final List<String> userList;

            name = parts[0];
            passwd = parts[1];
            gid = Integer.parseInt(parts[2]);

            if (parts.length == 4) {
                userList = Arrays.asList(parts[3].split(","));
            } else {
                userList = Collections.emptyList();
            }

            group = new GroupReader2(name, passwd, gid, userList);

            return group;
        } catch (final NumberFormatException ex) {
            throw new InvalidGroupException(groupLine + " gid must be a number");
        }
    }

    private final int gid;
    private final String name;
    private final String passwd;

    private final List<String> userList;

    public GroupReader2(final String nm, final String pw, final int id,
            final List<String> users) {
        name = nm;
        passwd = pw;
        gid = id;
        userList = Collections.unmodifiableList(new ArrayList<String>(users));
    }

    public int getGid() {
        return (gid);
    }

    public String getName() {
        return (name);
    }

    public String getPasswd() {
        return (passwd);
    }

    public List<String> getUserList() {
        return (userList);
    }

    @Override
    public String toString() {
        final StringBuilder sb;

        sb = new StringBuilder();
        sb.append(name);
        sb.append(":");
        sb.append(passwd);
        sb.append(":");
        sb.append(gid);
        sb.append(":");

        for (final String user : userList) {
            sb.append(user);
            sb.append(",");
        }

        sb.setLength(sb.length() - 1);

        return (sb.toString());
    }
}
包文件utils;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Collections;
导入java.util.List;
公共类GroupReader2{
公共静态类InvalidGroupException扩展异常{
私有静态最终长serialVersionUID=1L;
公共InvalidGroupException(字符串){
超级(字符串);
}
}
公共静态GroupReader2 parseGroup(最终字符串groupLine)
抛出InvalidGroupException{
最后一根弦线;
最终字符串[]部分;
if(groupLine==null){
抛出新的IllegalArgumentException(“groupLine不能为null”);
}
line=groupLine.trim();
if(line.startsWith(“#”)line.isEmpty()){
返回null;
}
部分=行。拆分(“:”);
如果(零件长度<3){
抛出新的InvalidGroupException(groupLine
+“格式必须为name:passwd:gid[:userlist]”;
}
试一试{
最终分组Reader2组;
最后的字符串名;
最终字符串passwd;
最终int gid;
最终列表用户列表;
名称=零件[0];
passwd=零件[1];
gid=Integer.parseInt(部分[2]);
如果(parts.length==4){
userList=Arrays.asList(部分[3]。拆分(“,”);
}否则{
userList=Collections.emptyList();
}
group=newgroupreader2(name、passwd、gid、userList);
返回组;
}捕获(最终编号格式异常){
抛出新的InvalidGroupException(groupLine+“gid必须是一个数字”);
}
}
私人最终int gid;
私有最终字符串名;
私有最终字符串passwd;
私有最终列表用户列表;
公共组读取器2(最终字符串nm、最终字符串pw、最终整数id、,
最终用户名单){
名称=纳米;
passwd=pw;
gid=id;
userList=Collections.unmodifiableList(新的ArrayList(用户));
}
public int getGid(){
返回(gid);
}
公共字符串getName(){
报税表(姓名);
}
公共字符串getPasswd(){
返回(passwd);
}
公共列表getUserList(){
返回(用户列表);
}
@凌驾
公共字符串toString(){
最后一次投票;
sb=新的StringBuilder();
某人(姓名);
某人加上(“:”);
某人附加(passwd);
某人加上(“:”);
某人追加(gid);
某人加上(“:”);
for(最终字符串用户:userList){
某人附加(用户);
某人加上(“,”);
}
sb.setLength(sb.length()-1);
使(某人)返回字符串();
}
}

这是我的代码,ToBubeer更新了,我又更新了。他的书没有编译。缺少InvalidGroupException类。此外,未指定任何包。将空列表切换为emptyList(),以避免缺少参数化

package fileutils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class GroupReader2 {
    public static class InvalidGroupException extends Exception {
        private static final long serialVersionUID = 1L;

        public InvalidGroupException(String string) {
            super(string);
        }
    }

    public static GroupReader2 parseGroup(final String groupLine)
            throws InvalidGroupException {
        final String line;
        final String[] parts;

        if (groupLine == null) {
            throw new IllegalArgumentException("groupLine cannot be null");
        }

        line = groupLine.trim();

        if (line.startsWith("#") || line.isEmpty()) {
            return null;
        }

        parts = line.split(":");

        if (parts.length < 3) {
            throw new InvalidGroupException(groupLine
                    + "must be in the format of name:passwd:gid[:userlist]");
        }

        try {
            final GroupReader2 group;
            final String name;
            final String passwd;
            final int gid;
            final List<String> userList;

            name = parts[0];
            passwd = parts[1];
            gid = Integer.parseInt(parts[2]);

            if (parts.length == 4) {
                userList = Arrays.asList(parts[3].split(","));
            } else {
                userList = Collections.emptyList();
            }

            group = new GroupReader2(name, passwd, gid, userList);

            return group;
        } catch (final NumberFormatException ex) {
            throw new InvalidGroupException(groupLine + " gid must be a number");
        }
    }

    private final int gid;
    private final String name;
    private final String passwd;

    private final List<String> userList;

    public GroupReader2(final String nm, final String pw, final int id,
            final List<String> users) {
        name = nm;
        passwd = pw;
        gid = id;
        userList = Collections.unmodifiableList(new ArrayList<String>(users));
    }

    public int getGid() {
        return (gid);
    }

    public String getName() {
        return (name);
    }

    public String getPasswd() {
        return (passwd);
    }

    public List<String> getUserList() {
        return (userList);
    }

    @Override
    public String toString() {
        final StringBuilder sb;

        sb = new StringBuilder();
        sb.append(name);
        sb.append(":");
        sb.append(passwd);
        sb.append(":");
        sb.append(gid);
        sb.append(":");

        for (final String user : userList) {
            sb.append(user);
            sb.append(",");
        }

        sb.setLength(sb.length() - 1);

        return (sb.toString());
    }
}
包文件utils;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Collections;
导入java.util.List;
公共类GroupReader2{
公共静态类InvalidGroupException扩展异常{
私有静态最终长serialVersionUID=1L;
公共InvalidGroupException(字符串){
超级(字符串);
}
}
公共静态GroupReader2 parseGroup(最终字符串groupLine)
抛出InvalidGroupException{
最后一根弦线;
最终字符串[]部分;
if(groupLine==null){
抛出新的IllegalArgumentException(“groupLine不能为null”);
}
line=groupLine.trim();
if(line.startsWith(“#”)line.isEmpty()){
返回null;
}
部分=行。拆分(“:”);
如果(零件长度<3){
抛出新的InvalidGroupException(groupLine
+“格式必须为name:passwd:gid[:userlist]”;
}
试一试{
最终分组Reader2组;
最后的字符串名;
最终字符串passwd;
最终int gid;
最终列表用户列表;
名称=零件[0];
passwd=零件[1];
gid=Integer.parseInt(部分[2]);
如果(parts.length==4){
userList=Arrays.asList(部分[3]。拆分(“,”);
}否则{
userList=Collections.emptyList();
}
group=newgroupreader2(name、passwd、gid、userList);
返回组;
}捕获(最终编号格式异常){
抛出新的InvalidGroupException(groupLine+“gid必须是一个数字”);
}
}
私人最终int gid;
私有最终字符串名;
私有最终字符串passwd;
私人最终名单