题目:
文件内容加行号:给定一个文件,通过文件读写,给文件内容加行号,行号形式如:
1:) xxxxxx
2:) xxxxxx
要求:使用缓冲流操作。
程序设计:
a、设计思路:
这个程序的目标是读取一个文件的内容,并在每一行前面添加行号。这个任务可以分为四个步骤:
- 文件读取:程序需要从一个文件中读取内容。在这个程序中,我们选择使用BufferedReader来读取文件,因为它可以方便地一行一行地读取文件。
- 内容处理:程序需要对读取的内容进行处理。在这个程序中,我们选择在每一行的前面添加行号。
- 内容写入:程序需要将处理后的内容写入到另一个文件中。在这个程序中,我们选择使用BufferedWriter来写入文件,因为它可以方便地一行一行地写入文件。
- 资源关闭:最后,程序需要关闭所有打开的资源。
b、主要代码结构:
- 创建文件读取器:这部分的代码创建了一个BufferedReader实例,它是一个字符输入流,可以从字符文件中读取文本。这个实例被包装在FileReader对象中,FileReader是一个连接到文件的字符流。
- 创建文件写入器:这部分的代码创建了一个BufferedWriter实例,它是一个字符输出流,可以将文本写入字符文件。这个实例被包装在FileWriter对象中,FileWriter是一个连接到文件的字符流。
- 读取每一行,添加行号并写入新文件:这部分的代码首先使用BufferedReader的readLine方法读取文件的每一行。然后,它将行号和行内容组合成一个新的字符串,并使用BufferedWriter的write方法将这个字符串写入新文件。最后,它使用BufferedWriter的newLine方法在每一行的末尾添加一个新行符。
- 关闭读取器和写入器:这部分的代码使用BufferedReader和BufferedWriter的close方法关闭读取器和写入器。这是一个重要的步骤,因为在完成文件操作后,应该立即关闭打开的资源。这样可以防止资源泄漏,提高程序的效率和稳定性。
c、主要代码段的文字分析:
- 创建文件读取器:这部分的代码创建了一个字符输入流实例,用于从文件中读取数据。
- 创建文件写入器:这部分的代码创建了一个字符输出流实例,用于向文件中写入数据。
- 读取每一行,添加行号并写入新文件:这部分的代码首先使用字符输入流的方法读取文件的每一行。然后,它将行号和行内容组合成一个新的字符串,并使用字符输出流的方法将这个字符串
d、输出结果截图:
图2-1 原输入
图2-2 修改结果
总结:
我们使用BufferedReader来读取文件。这个工具有一个readLine()方法,可以方便地一行一行地读取文件。然后,我们在每一行的前面添加行号,形成一个新的字符串。接下来,我们使用BufferedWriter来写入文件。这个工具有一个write()方法,可以方便地一行一行地写入文件。我们将处理后的字符串写入到一个新的文件中。最后,我们使用close()方法来关闭所有打开的资源。这是一个非常重要的步骤,因为在完成文件操作后,我们应该立即关闭所有打开的资源,以防止资源泄漏,提高程序的效率和稳定性。
这个程序展示了如何使用Java的缓冲流来处理文件,这对于需要逐行处理文件的任务来说非常有用。这个程序也展示了如何在处理文件时管理资源,以确保程序的效率和稳定性。这些都是编写高效、稳定的Java程序的重要技巧。
附录代码:
import java.io.*;
public class AddLineNumberExample {
public static void main(String[] args) throws IOException {
// 创建文件读取器
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
// 创建文件写入器
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
String line;
int lineNumber = 1;
// 读取每一行,添加行号并写入新文件
while ((line = reader.readLine()) != null) {
writer.write(lineNumber + ":) " + line);
writer.newLine();
lineNumber++;
}
// 关闭读取器和写入器
reader.close();
writer.close();
}
}