Java 文件读取最后一行
我在java中使用这个代码从文件中读取并传递值到向量,但似乎不考虑最后一行。Java 文件读取最后一行,java,vector,io,Java,Vector,Io,我在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.addEl
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));
}
例如,我想从第二行读取,并将它们添加到向量中。打印结果如下所示
3
sdfg
sfdg
null
出现了什么问题?更改:
while(in.readLine()!=null)
致:
其中,line
是一个字符串,您应该在while循环之前定义它
然后使用以下行变量添加元素
vc.addElement(line);
正如注释中所建议的,您可以使用arraylist而不是vector,
它解释了为什么要这样做。使用以下代码:
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);
}
}
}
名为test
的文件的内容是:
4
fdgdfs
sdfg
sdfg
sfdg
sdfg
饮食规范可能对健康有害。除此之外,
行>=1
将跳过第一行,因为行
已初始化为0。每次迭代都要调用.readLine()。叫它一次。另外,停止使用向量。它已经过时15年了。并考虑使用也…你真的需要一个向量
而不是数组列表
?不要使用向量
。使用ArrayList
@MadConan我不会说“不”,回想一下Vector
s是同步的,有时您确实需要它们。
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
4
fdgdfs
sdfg
sdfg
sfdg
sdfg