如何用逗号分隔文本文件中返回的List <string>?

时间:2018-12-03 02:13:17

标签: java list bufferedreader filereader

我正在读取文本文件(usernames.txt),该文件的值用逗号分隔:

  

AA328747,AA337748,AA057393,AA290457,AA467620,AA225950,AA352105,   AA108183,AA057070,

使用我的方法:

public static List<String> readUsername(String path){

        File file = new File(path);     
        Reader fileReader;
        List<String> list = new ArrayList<String>();
        String username;

        try 
        {
            fileReader = new FileReader(file);
            BufferedReader br = new BufferedReader(fileReader);
            username = br.readLine();

            while (username != null)
            {
                list.add(username);
                username= br.readLine();
            }

            br.close();
        } 
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }           

        return list;        
    }

然后我尝试将其打印到控制台:

List<String> usernameList = readUsername(fileStr);

    for (int i=0; i < usernameList.size(); i++)
    {
        System.out.println(usernameList.size());
        System.out.println(usernameList.get(i) + " end");
    }

其中fireStr只是我的路径文件字符串。

它打印效果很好,但是列表对象(usernameList.size())的大小仅为1

打印输出为:

  

AA328747,AA337748,AA057393,AA290457,AA467620,AA225950,AA352105,   AA108183,AA057070,结束

我希望它如何打印出来,就像:

  

AA328747结束

     

AA337748结束

     

AA057393结尾

     

AA290457结尾

     

AA467620结尾

     

AA225950结束

     

AA352105结尾

     

AA108183结尾

     

AA057070结尾

列表大小应大于1个项目(在我的示例中,文本文件中的九个用户名,列表大小应为9)。

如何摆脱逗号,仅将每个用户名评估为单独的字符串而不是一个大字符串?

2 个答案:

答案 0 :(得分:1)

如下更新功能readUsername

while (username != null) {
     List<String> tmp = Arrays.asList(username.split(","));
     tmp.removeIf(u -> u.isEmpty());
     list.addAll(tmp);
     usernames = br.readLine();
}

答案 1 :(得分:1)

我相信您想要split()方法。您可以使用Collections#addAll直接将Array产生的split中的所有元素添加到List中:

while (username != null)
{
     Collections.addAll(list, username.split(","));
     username= br.readLine();
}