【发布时间】:2018-10-26 22:38:39
【问题描述】:
我想从文件中读取几个单词。我没有找到任何方法来做到这一点,所以我决定逐个字符地读取 char,但我需要在空格处停下来将读取的单词存储在我的数组中并转到下一个。
我正在制作一个外部排序应用程序,这就是我有内存限制的原因,在这种情况下,我不能只使用readLine() 然后split(),我需要控制我的内容阅读。
read() 方法返回一个 int,我不知道我可以做什么来处理 read() 方法返回一个 char 并在空格后停止读取。
到目前为止,这是我的代码:
protected static String [] readWords(String arqName, int amountOfWords) throws IOException {
FileReader arq = new FileReader(arqName);
BufferedReader lerArq = new BufferedReader(arq);
String[] words = new String[amountOfWords];
for (int i = 0; i < amountOfWords; i++){
//words[i] = lerArq.read();
}
return words;
}
编辑 1: 我使用了 Scanner 和 next() 方法,它起作用了。 Scanner 的初始化在 Main。
static String [] readWords(int amountOfWords, Scanner leitor) throws IOException {
String[] words= new String[amountOfWords];
for (int i = 0; i < amountOfWords; i++){
words[i] = leitor.next();
}
return words;
}
【问题讨论】:
-
使用nextLine()函数逐行读取,然后调用split(" ")生成单词数组,假设单词之间只用一个空格隔开
-
您可以使用
Scanner.next()一次阅读一个单词。例如tutorialspoint.com/java/util/scanner_next.htm -
@RAZ_Muh_Taz 我很感谢这个答案,但正如我在问题中所说,由于内存限制,我不能只使用 nextLine()。
-
@SergeiSirik 我会试试的,谢谢!
标签: java file char external-sorting