我在Java中使用此代码从文件中读取并将值传递给向量,但似乎不考虑最后一行。
int lines = 0;
Vector<String> vc = new Vector<String>();
BufferedReader in = new BufferedReader(new FileReader(FILE_NAME));
while(in.readLine() != null){
if(lines >= 1){
vc.addElement(in.readLine());
}
lines++;
}
System.out.println(vc.size());
for(int i = 0; i< vc.size(); i++){
System.out.println(vc.get(i));
}
文件的元素是
4
fdgdfs
sdfg
sdfg
sfdg
sdfg
例如,我想从第二行读取并将它们添加到向量中。结果打印
3
sdfg
sfdg
null
什么似乎是问题?
答案 0 :(得分:2)
变化:
while(in.readLine()!=null)
为:
while((line = in.readLine())!=null)
其中line
是一个String,你应该在while循环之前定义。
然后使用line变量按如下方式添加元素
vc.addElement(line);
正如评论中所建议的那样,您可以使用arraylist而不是vector, read this它解释了为什么你应该这样做。
答案 1 :(得分:0)
使用此代码:
package stackoverflow;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
public class FileReadingLastLine {
private static final String FILE_NAME = "test";
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
try {
BufferedReader in = new BufferedReader(new FileReader(FILE_NAME));
String line = "";
int lines = 0;
while ((line = in.readLine()) != null) {
if (lines >= 1) {
list.add(line);
}
lines++;
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Size: " + list.size() + "\n");
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String string = (String) iterator.next();
System.out.println(string);
}
}
}
输出结果为:
Size: 5
fdgdfs
sdfg
sdfg
sfdg
sdfg
名为test
的文件的内容为:
4
fdgdfs
sdfg
sdfg
sfdg
sdfg