#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. кажется, работает просто отлично. Большое спасибо за помощь !!! 🙂