使用java从文本文件中读取数据行
问题描述:
我有一个x行数的文本文件。每行保存一个整数。当用户点击一个按钮时,通过actionlistener执行一个动作,它应该列出文本文件上显示的所有值。但是,现在我已将亚麻布设置为10,意味着我已经告诉代码只能处理10行文本文件。所以,如果我的文本文件只有3行/行的数据...它会列出这些行,其余7行,它会吐出“空”。使用java从文本文件中读取数据行
我记得有一种方法可以使用省略号让程序知道你不知道确切的值,但最后它会根据给定的信息来计算它。我给出的信息将包含数字(数据)的行数。
下面是代码的一部分。
private class thehandler implements ActionListener{
public void actionPerformed(ActionEvent event){
BufferedReader inputFile=null;
try {
FileReader freader =new FileReader("Data.txt");
inputFile = new BufferedReader(freader);
String MAP = "";
int linenum=10;
while(linenum > 0)
{
linenum=linenum-1;
MAP = inputFile.readLine();//read the next line until the specfic line is found
System.out.println(MAP);
}
} catch(Exception y) { y.printStackTrace(); }
}}
答
只是把代替linenum > 0
下一行(MAP = inputFile.readLine()) != null
并删除下一行,linenum=linenum-1; MAP = inputFile.readLine();
下回有点谷歌搜索可以帮助+) 最后一行的空值将不被打印出来,因为它设置该行是当前行并将其与空值进行比较,因此如果最后一行为空,则不会打印它,10行限制如何?你可以做到这一点很容易,你只需添加一个索引来for循环和索引,并与& &检查,如果我是较低的,然后10
答
你怎么样不打印地图如果其值为null?
答
测试是否回来从BufferedReader.readLine(),如果它是空停止循环,像这样的值:
BufferedReader reader = new BufferedReader(new FileReader("Data.txt"));
try {
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
} finally {
reader.close();
}
编辑:忘了要求采取第10行,你可以改变上面的代码把输出的列表,并返回列表中,那么你可以通过这样的函数将其过滤:
public List<String> takeFirst(int howMany, List<String> lines) {
return lines.size() <= howMany ? lines : lines.subList(0, howMany);
}
如果该文件是巨大的,那么这将是低效的,当然,如果是重要的,你将结束做类似的事情:
BufferedReader reader = new BufferedReader(new FileReader("Data.txt"));
try {
int linesRead = 0;
for (String line; (line = reader.readLine()) != null && linesRead < 10;) {
System.out.println(line);
linesRead += 1;
}
} finally {
reader.close();
}
这是丑陋的,但只读取您需要的行。
他会为Google做什么? – 2010-12-23 16:50:37
使用文件?那我每次遇到问题时都会做什么 – Swine1973 2010-12-23 17:06:19