如何从文本文件中用逗号拆分返回的 List<String>?

How to split a returned List<String> by comma from a text file?

我正在读取一个文本文件 (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, end

我希望它打印出来的方式如下:

AA328747 end

AA337748 end

AA057393 end

AA290457 end

AA467620 end

AA225950 end

AA352105 end

AA108183 end

AA057070 end

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

我如何去掉逗号并将每个用户名作为单独的字符串而不是一个大字符串来计算?

更新您的函数 readUsername,如下所示。

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

我相信您希望 split() method. You can use Collections#addAll 直接将 split 生成的 Array 中的所有元素添加到 List:

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