Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何拆分返回的列表<;字符串>;通过文本文件中的逗号?_Java_List_Bufferedreader_Filereader - Fatal编程技术网

Java 如何拆分返回的列表<;字符串>;通过文本文件中的逗号?

Java 如何拆分返回的列表<;字符串>;通过文本文件中的逗号?,java,list,bufferedreader,filereader,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

我正在从一个文本文件(
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;        
    }
公共静态列表readUsername(字符串路径){
文件=新文件(路径);
阅读器文件阅读器;
列表=新的ArrayList();
字符串用户名;
尝试
{
fileReader=新的fileReader(文件);
BufferedReader br=新的BufferedReader(文件读取器);
username=br.readLine();
while(用户名!=null)
{
列表。添加(用户名);
username=br.readLine();
}
br.close();
} 
catch(filenotfounde异常)
{
e、 printStackTrace();
} 
捕获(IOE异常)
{
e、 printStackTrace();
}           
退货清单;
}
我尝试将其打印到控制台:

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");
    }
List usernameList=readUsername(fileStr);
对于(int i=0;i
其中
fireStr
只是我的路径文件字符串

它打印得很好,但是列表对象(
usernameList.size()
)的大小只有
1

打印件为:

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

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

AA328747结束

AA337748结束

AA057393完

AA290457完

AA467620结束

AA225950结束

AA352105结束

AA108183结束

AA057070结束

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


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

如下更新函数
readUsername

while (username != null) {
     List<String> tmp = Arrays.asList(username.split(","));
     tmp.removeIf(u -> u.isEmpty());
     list.addAll(tmp);
     usernames = br.readLine();
}
while(用户名!=null){
List tmp=Arrays.asList(username.split(“,”);
tmp.removeIf(u->u.isEmpty());
list.addAll(tmp);
usernames=br.readLine();
}
我相信您需要该方法。您可以使用直接将
split
生成的
数组中的所有元素添加到
列表中

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

我想你正在寻找
split()
方法
String::split
像这样的
usernameList.get(I).split(“,”)
?我想这是我得到的两个回答之间比较优雅的答案。非常感谢。