我想从文件中打印特定行,例如第四行或第二行。这是我的代码,它只显示所有行和每行号。如果这是一个简单而愚蠢的问题,我很抱歉,但提前谢谢你:D。
FileReader fr = null;
LineNumberReader lnr = null;
String str;
int i;
try{
// create new reader
fr = new FileReader("test.txt");
lnr = new LineNumberReader(fr);
// read lines till the end of the stream
while((str=lnr.readLine())!=null)
{
i=lnr.getLineNumber();
System.out.print("("+i+")");
// prints string
System.out.println(str);
}
}catch(Exception e){
// if any error occurs
e.printStackTrace();
}finally{
// closes the stream and releases system resources
if(fr!=null)
fr.close();
if(lnr!=null)
lnr.close();
}
}
}
答案 0 :(得分:2)
最简单的方法是简单地跟踪您正在阅读的行。您似乎想要使用i
。一旦您阅读完所需的行,就不要忘记break
。
此外,continue语句说"跳过其他所有内容并转到下一次迭代"。
请参阅The while and do-while Statements
while((str=lnr.readLine())!=null)
{
i=lnr.getLineNumber();
if(i != 57) continue;
System.out.print("("+i+")");
// prints string
System.out.println(str);
break;
}
请注意,正如下面提到的评论,LineNumberReader开始在0
阅读。因此,这实际上将以自然顺序返回第56行。如果您想要57自然顺序,则可以使用此条件语句。
if(i <= 57) continue;
答案 1 :(得分:1)
怎么样
if(i == 2){
System.out.println(str);
break;
}
而不是2,您可以将数字作为命令行参数或用户输入。
答案 2 :(得分:0)
将一些计数器置于循环内并向while循环添加附加条件,例如counter&lt;我认为应该按照你的意愿行事。
答案 3 :(得分:0)
这个怎么样。
public static void main(String[] args)
{
int lineNo = 2; // Sample line number
System.out.println("content present in the given line no "+lineNo+" --> "+getLineContents(lineNo));
}
public static String getContents(int line_no) {
String line = null;
try(LineNumberReader lineNumberReader = new LineNumberReader(new FileReader("path\\to\\file")))
{
while ((line = lineNumberReader.readLine()) != null) {
if (lineNumberReader.getLineNumber() == line_no) {
break;
}
}
}
catch(Exception exception){
System.out.println("Exception :: "+exception.getMessage());
}
finally{
return line;
}
}
在try-with-resources statement的帮助下,您可以避免明确关闭流,一切都由他们照顾。