第十行
难度:
标签:
题目描述
给定一个文本文件 file.txt
,请只打印这个文件中的第十行。
示例:
假设 file.txt
有如下内容:
Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10
你的脚本应当显示第十行:
Line 10
说明:
1. 如果文件少于十行,你应当输出什么?
2. 至少有三种不同的解法,请尝试尽可能多的方法来解题。
代码结果
运行时间: 8 ms, 内存: 3.5 MB
/*
* 思路:
* 1. 使用Files.lines方法读取文件并将其转为Stream。
* 2. 使用Stream的skip方法跳过前9行。
* 3. 使用findFirst获取第10行。
* 4. 如果文件少于10行,则输出一条提示信息。
*/
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class SolutionStream {
public static void main(String[] args) {
String fileName = "file.txt";
try (Stream<String> lines = Files.lines(Paths.get(fileName))) {
lines.skip(9).findFirst().ifPresentOrElse(System.out::println, () -> System.out.println("The file has less than 10 lines."));
} catch (IOException e) {
e.printStackTrace();
}
}
}
解释
方法:
这个解法使用 sed 命令直接打印文件的第 10 行。sed 是一个流编辑器,可以对文本进行过滤和转换。-n 参数表示不自动打印,10p 表示打印第 10 行。
时间复杂度:
O(n)
空间复杂度:
O(1)
代码细节讲解
🦆
解析第十行的具体命令`sed -n 10p file.txt`中,`-n`参数和`10p`具体有什么作用?
▷🦆
在文件行数少于10行时,使用`sed -n 10p file.txt`命令会有什么输出?
▷🦆
题解提到至少有三种不同的解法,能否简要说明除了使用sed外,还可以使用哪些其他工具或方法来解决这个问题?
▷