java与bufferedReader之间存在一些问题
我有一个java函数,如下所示:
public HashMap<String, ArrayList<Double>> embedWords(BufferedReader buffR1 {
ArrayList<String > arrayList = new ArrayList<String>();
arrayList = getWords(buffR1);
System.out.println("Word size:"+ arrayList.size());
ArrayList<ArrayList<Double>> arrList = getWordFeature(buffR1);
System.out.println("Size of arrList:embedWords:"+arrList.size());
}
这里的问题是,函数 getWords
和 getWordFeatures
都不能给出大小值。当我注释函数getWords
时,函数getWordFeature
返回非零值。但在未注释时,输出如下所示:
Word size:15055
Size of arrList:embedWords: 0
# 1 楼答案
所以你基本上告诉我们,
BufferedReader
会“吃掉”你的输入,一旦消化,就没有“再读一遍”了这并不奇怪,因为流和读卡器就是这样设计的
# 2 楼答案
在调用
getWordFeature
函数时,getWords
函数已经读取了buffR1
流的内容。在调用流之前,您需要阅读流的内容以避免它您可能希望首先将内容读入一个数组,我们称之为
barr
然后使用ByteArrayInputStream调用函数,其内容为
barr
如果你不能改变/重构方法,我认为这是最好的解决方案。如果你把它作为一个类来正确实现,这个解决方案会变得非常酷