我需要一段java代码,功能是按行数拆分文件
时间: 2023-09-11 15:04:42 浏览: 54
### 回答1:
您好!下面是一段按行数拆分文件的 Java 代码。
```
import java.io.*;
public class FileSplitter {
public static void splitFile(String fileName, int linesPerFile) {
try {
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
int lineCounter = 0;
int fileCounter = 0;
String newFileName;
BufferedWriter writer = null;
while ((line = reader.readLine()) != null) {
if (lineCounter % linesPerFile == 0) {
if (writer != null) {
writer.close();
}
fileCounter++;
newFileName = fileName + "_" + fileCounter;
writer = new BufferedWriter(new FileWriter(newFileName));
}
writer.write(line);
writer.newLine();
lineCounter++;
}
if (writer != null) {
writer.close();
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
splitFile("original.txt", 5);
}
}
```
该代码使用 `BufferedReader` 和 `BufferedWriter` 读取和写入文件,并以行为单位进行操作。它每读取 `linesPerFile` 行数据就会创建一个新文件,并在新文件中写入该行数据。如果您想要拆分其他数量的行,可以将 `linesPerFile` 的值更改为您所需的数量。
在此代码中,将会把文件 "original.txt" 按每 5 行拆分成多个新文件。
### 回答2:
下面是一个根据行数拆分文件的Java代码示例:
```java
import java.io.*;
public class FileSplitter {
public static void main(String[] args) {
String filePath = "input.txt"; // 待拆分的文件路径
int linesPerFile = 10; // 每个输出文件的行数
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
int fileIndex = 1;
int lineCount = 0;
BufferedWriter writer = new BufferedWriter(new FileWriter("output_" + fileIndex + ".txt"));
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
lineCount++;
if (lineCount == linesPerFile) {
writer.close();
fileIndex++;
lineCount = 0;
writer = new BufferedWriter(new FileWriter("output_" + fileIndex + ".txt"));
}
}
writer.close();
System.out.println("文件拆分完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这段代码使用`BufferedReader`从输入文件中逐行读取内容,并使用`BufferedWriter`将内容写入输出文件中。在每写入指定行数的内容后,会关闭当前输出文件,然后创建一个新的输出文件来继续写入。输出文件的命名规则是按照`output_1.txt`、`output_2.txt`这样的顺序递增。
请注意,以上代码仅仅提供了基本的文件拆分功能,还可以根据实际需求进行修改和优化。
### 回答3:
为了实现按行数拆分文件的功能,可以使用Java中的IO流和字符串处理方法。
以下是一个简单的Java代码示例:
```
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class SplitFileByLines {
public static void main(String[] args) {
String inputFilePath = "input.txt"; // 输入文件路径
String outputFilePathPrefix = "output"; // 输出文件路径前缀
int linesPerFile = 10; // 每个文件的行数
try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath))) {
int fileCount = 1;
int lineCount = 0;
String line;
BufferedWriter writer = null;
while ((line = reader.readLine()) != null) {
if (writer == null || lineCount == linesPerFile) {
if (writer != null) {
writer.close();
}
String outputFilePath = outputFilePathPrefix + fileCount + ".txt";
writer = new BufferedWriter(new FileWriter(outputFilePath));
fileCount++;
lineCount = 0;
}
writer.write(line);
writer.newLine();
lineCount++;
}
if (writer != null) {
writer.close();
}
System.out.println("文件拆分完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码中,我们通过`BufferedReader`来逐行读取输入文件的内容,并通过`BufferedWriter`来逐行写入输出文件。在定义输出文件路径时,根据需要拆分的行数加上一个计数器以保证输出文件的唯一性。
每读取指定行数的行数后,关闭上一个输出文件,创建一个新的输出文件,并将行数计数器重置为0。最后根据需要拆分的行数,可能会生成多个输出文件。
请确保将`input.txt`替换为要拆分的输入文件的实际路径,并可根据需求调整`outputFilePathPrefix`和`linesPerFile`的值。