将包含多个单词的字符串转换为单词向量

Converting a string that contains multiple words to a vector of words

我有一个 InputStream 文件,我必须将该文件中的所有单词放入一个字符串向量中。 我尝试了多种方法将 InputStream 文件转换为我可以读取其中所有单词的位置,但无论如何我总是以包含所有单词的长字符串结束。 如何将文件中的所有单词分开,以便将它们放入字符串向量中? 这是我从 InputStream 文件到字符串的转换代码:

public static InputStream vocabDoc = Librarian.class.getClassLoader().getResourceAsStream("Vocabulary.txt");

String str = new Scanner(vocabDoc,"UTF-8").useDelimiter("\A").next();
System.out.println(str);

这是文件“vocabDoc”包含的内容(准确):

file
vocabulary
test
is
one
this
for

如果我尝试将其放入向量中,它总是返回为:

[file

vocabulary

test

is

one

this

for

]

如果我取出 "\n",它会变成:[filevocabularytestisonethisfor],我的目标是得到类似:[file, vocabulary, test, is, one, this, for] 的结果。

我不确定从这里到哪里去,非常感谢您的帮助。

对于预期的输出,无需使用任何显式定界符即可。使用 Scanner#hasNext,您可以测试文件是否有更多的字数需要读取。

演示:

import java.io.InputStream;
import java.util.Scanner;
import java.util.Vector;

public class Main {
    public static void main(String[] args) {
        InputStream vocabDoc = Main.class.getClassLoader().getResourceAsStream("Vocabulary.txt");
        Scanner scanner = new Scanner(vocabDoc);
        Vector<String> vector = new Vector<>();
        while (scanner.hasNext()) {
            vector.add(scanner.next());
        }
        scanner.close();
        System.out.println(vector);
    }
}

输出:

[file, vocabulary, test, is, one, this, for]