Преобразование строки, содержащей несколько слов, в вектор слов

#java #string #vector #io

#java #строка #вектор #io

Вопрос:

У меня есть файл 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] .

Я не уверен, куда идти дальше, и был бы очень признателен за помощь.

Ответ №1:

Для получения ожидаемого результата просто сделайте это без использования какого-либо явного разделителя. Используя 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]
  

Комментарии:

1. это выдает ошибку, потому что File(InputStream) не работает. Мне нужно использовать InputStream для получения внешнего файла, я не могу просто записать его.

2. @Student — Что это за тип vocabDoc ? Я предлагаю вам отредактировать свой вопрос, добавив больше кода, чтобы он стал понятным.

3. Хорошо, я добавил описание файла.

4. @Student — я соответствующим образом обновил ответ. Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.

5. кажется, работает просто отлично. Большое спасибо за помощь !!! 🙂