以下是Java实现按行分割大文件的完整攻略,包含步骤、代码示例和输出结果。
步骤一:准备工作
首先,需要导入Java中的IO包,以便读取和处理文件。
import java.io.*;
接着,需要定义一个方法来实现按行分割文件,命名为splitByLine
。
public static void splitByLine(String fileName, int linesPerFile) throws IOException {
// 具体实现
}
其中,fileName
为需要分割的文件名,linesPerFile
为每个小文件包含的行数。
步骤二:读取大文件,按行分割
接下来,在定义的方法中具体实现按行分割文件的功能。
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line = reader.readLine();
int fileNum = 0;
while (line != null) {
// 创建小文件
FileWriter writer = new FileWriter("split_" + fileNum + ".txt");
int linesWritten = 0;
while (line != null && linesWritten < linesPerFile) {
// 写入当前行到小文件
writer.write(line + System.lineSeparator());
line = reader.readLine();
linesWritten++;
}
// 关闭小文件
writer.close();
fileNum++;
}
// 关闭大文件
reader.close();
首先,通过BufferedReader
读取大文件,而后逐行读取文件内容,创建小文件并逐行写入当前行到小文件中,写入的行数需要计数,每当达到指定的行数后,关闭当前小文件,同时创建一个新的小文件,直到大文件全部处理完成。
步骤三:输出结果
最后,输出分割产生的小文件的文件名和内容。
File dir = new File(".");
File[] files = dir.listFiles((dir1, name) -> name.startsWith("split_"));
for (File file : files) {
System.out.println(file.getName());
BufferedReader fileReader = new BufferedReader(new FileReader(file));
String fileLine = fileReader.readLine();
while (fileLine != null) {
System.out.println(fileLine);
fileLine = fileReader.readLine();
}
fileReader.close();
}
从当前目录获取所有以split_
为前缀的文件,并逐个输出文件名和文件内容。
示例一
如果我们有一个名为big_file.txt
的大文件,包含150行文本:
This is line 1
This is line 2
This is line 3
...
This is line 150
现在我们要按照每个小文件包含50行的规则进行分割。调用splitByLine
方法:
splitByLine("big_file.txt", 50);
程序将会生成三个名为split_0.txt
、split_1.txt
、split_2.txt
的小文件,每个小文件包含50行文本,分别如下:
split_0.txt
This is line 1
This is line 2
This is line 3
...
This is line 50
split_1.txt
This is line 51
This is line 52
This is line 53
...
This is line 100
split_2.txt
This is line 101
This is line 102
This is line 103
...
This is line 150
可以看到,大文件已经被按照每个小文件包含50行的规则分割成了三个小文件,每个小文件包含50行文本。
示例二
现在我们有一个名为data.txt
的大文件,包含100行文本:
1
2
3
...
100
现在我们要按照每个小文件包含20行的规则进行分割。调用splitByLine
方法:
splitByLine("data.txt", 20);
程序将会生成五个名为split_0.txt
、split_1.txt
、split_2.txt
、split_3.txt
、split_4.txt
的小文件,每个小文件包含20行文本,分别如下:
split_0.txt
1
2
3
...
20
split_1.txt
21
22
23
...
40
split_2.txt
41
42
43
...
60
split_3.txt
61
62
63
...
80
split_4.txt
81
82
83
...
100
同样可以看到,大文件已经被按照每个小文件包含20行的规则分割成了五个小文件,每个小文件包含20行文本。
以上两个示例演示了Java实现按行分割大文件的完整攻略,可以根据实际需求调整分割行数和源文件名。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现按行分割大文件 - Python技术站