【发布时间】:2014-08-03 17:40:13
【问题描述】:
您好,我正在将一个文件加载到我的程序中并分配每个值(存储在一个新行上的数组中)我似乎无法发现为什么保存文件内容的数组在每个索引中为空。
private void readAndProcessWords() {
try {
FileReader _fr = new FileReader(FILEPATH);
BufferedReader textReader = new BufferedReader(_fr);
int numLines = getNumLines(textReader);
String[] words = new String[numLines];
for(int i=0;i<numLines;i++){
words[i] = textReader.readLine();
System.out.println(words[i]);
}
//clears memory reserved for this buffered reader
textReader.close();
} catch(IOException e) {
System.out.println(e);
}
}
private int getNumLines(BufferedReader textReader) throws IOException{
String line;
int numLines =0;
while((line = textReader.readLine()) != null){
numLines++;
}
return numLines;
}
}
解决方案:在循环上方添加以下代码以“重置”文件阅读器
_fr = new FileReader(FILEPATH);
textReader = new BufferedReader(_fr);
【问题讨论】:
-
欢迎来到 Stack Overflow,请拨打Tour。寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。见How to create a Minimal, Complete, and Verifiable example。
-
使用调试器来跟踪执行。
-
while((line = textReader.readLine()) != null){是怎么想的? -
我会声明您已经使用 getNumeLines() 使用了您的文件,因此在开始解析行时您处于文件末尾。
-
考虑使用 Guava 和类似下面的代码: final URL resource = Resources.getResource("path/to/file.txt"); final List
行 = Resources.readLines(resource, Charset.defaultCharset());
标签: java arrays bufferedreader