使用Java读取/ etc / passwd文件

时间:2014-08-01 12:19:21

标签: java

你能帮我看一下/ etc / passwd文件的内容吗?

我想用Java读取该文件并显示用户名和用户主文件夹位置。

vivek:x:500:500::/home/vivek:/bin/bash
raj:x:501:501::/home/raj:/bin/ksh
ash:x:502:502::/home/ash:/bin/zsh
jadmin:x:503:503::/home/jadmin:/bin/sh
jwww:x:504:504::/htdocs/html:/sbin/nologin
wwwcorp:x:505:505::/htdocs/corp:/sbin/nologin
wwwint:x:506:506::/htdocs/intranet:/bin/bash
scpftp:x:507:507::/htdocs/ftpjail:/bin/bash
rsynftp:x:508:508::/htdocs/projets:/bin/bash
mirror:x:509:509::/htdocs:/bin/bash
jony:x:510:510::/home/jony:/bin/ksh
amyk:x:511:511::/home/amyk:/bin/ksh

这可以用Java吗?

修改

这是我的建议

public void readLinuxUsers()
    {
        try
        {
            BufferedReader in = new BufferedReader(new FileReader("/etc/passwd"));
            String str;
            str = in.readLine();
            while ((str = in.readLine()) != null)
            {
                String[] ar = str.split(":");
                String username = ar[0];
                String homedir = ar[6];

            }
            in.close();
        }
        catch (IOException e)
        {
            System.out.println("File Read Error");
        }
    }

但是如何在::?

之后读取主目录

2 个答案:

答案 0 :(得分:1)

为什么不是? / etc / passwd是一个与系统上任何其他文件类似的文件。只需以只读方式打开并解析文本以获取所需信息。在这种情况下,/ etc / passwd是几个独立的行,每行都有一个以冒号分隔的字段,':'。您想要的字段是用户名(第一个)和主目录(第六个)。注意::表示那里有一个空字段。

答案 1 :(得分:1)

抱歉,我还没有足够的声誉发表评论,但您的代码中可能存在错误(除非您打算排除根用户名),因为第一个readLine命令读取第一行,而readLine在循环读取下一行。