Как разделить возвращенный список <String>запятой из текстового файла? - PullRequest
0 голосов
/ 03 декабря 2018

Я читаю из текстового файла (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 end

AA057070 end

И размер списка должен быть больше 1 элементов (В моем примере это должно быть 9 для девяти имен пользователей в текстефайл).

Как избавиться от запятых и просто оценивать каждое имя пользователя как отдельные строки вместо одной большой строки?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Я полагаю, вы хотите метод split().Вы можете использовать Collections#addAll для непосредственного добавления всех элементов из Array, созданного split, в List:

while (username != null)
{
     Collections.addAll(list, username.split(","));
     username= br.readLine();
}
0 голосов
/ 03 декабря 2018

Обновите вашу функцию readUsername, как показано ниже.

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