我正在为我的期末考试而学习,我想知道是否有一种特殊的方式可以打印出文本文件中一行的数据。例如,如果我在文本文件中有以下内容:
11
1c20
203
G2
我想知道是否有一种方法可以输入例如 2 ,4 我会得到输出 1c20 203 G2。通过使用两个整数开始和结束。我对这种方法进行了研究,但找不到任何东西。我知道有一个 getLineNumber() 但我想使用这两个整数。
提前致谢!
我正在为我的期末考试而学习,我想知道是否有一种特殊的方式可以打印出文本文件中一行的数据。例如,如果我在文本文件中有以下内容:
11
1c20
203
G2
我想知道是否有一种方法可以输入例如 2 ,4 我会得到输出 1c20 203 G2。通过使用两个整数开始和结束。我对这种方法进行了研究,但找不到任何东西。我知道有一个 getLineNumber() 但我想使用这两个整数。
提前致谢!
这是一个选项(带指针):
start
中end
BufferedReader#readLine
,增加每行的计数器end
时,从循环中中断。您可能想看看 java.io.LineNumberReader:http ://docs.oracle.com/javase/6/docs/api/java/io/LineNumberReader.html
请注意,行号从 0 开始
试试这个:
import java.io.*;
/*
* Usage: java LinePrinter <start> <end>
* Example: java LinePrinter 2 4
*/
public class LinePrinter
{
public static void main(String[] args)
{
int start = Integer.parseInt(args[0]);
int end = Integer.parseInt(args[1]);
LineNumberReader reader = null;
String line = null;
boolean flag = false;
try
{
reader = new LineNumberReader(new FileReader("data.txt"));
while ((line = reader.readLine()) != null)
{
if (reader.getLineNumber() == start)
{
flag = true;
}
if (flag)
{
System.out.println(line);
}
if (reader.getLineNumber() == end)
{
flag = false;
break;
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
假设您的文件名为 data.txt,您可以使用 sed 显示第 3 到 5 行,如下所示:
$> sed -n '3,5p' data.txt