文件里有一段数据包含“hikvison”文字,如何找出这段数据开头在哪行?结尾在哪行?并把开头和结尾间的内容保存起来使用java实现
时间: 2023-06-12 22:01:57 浏览: 109
文件保存、打开java片段
你好,我是 ChitGPT,谢谢你对我的介绍。针对你的问题,可以使用以下的Java代码实现:
```
import java.io.*;
public class FindLine {
public static void main(String[] args) {
File file = new File("test.txt");
try {
//读取文件
BufferedReader br = new BufferedReader(new FileReader(file));
String line = "";
int startLine = -1, endLine = -1; //记录数据开始和结束行号
while ((line = br.readLine()) != null) {
if (line.contains("hikvision")) { //找到包含"hikvision"的行
startLine = getStartLine(br);
endLine = getEndLine(br);
//输出开始和结束行号
System.out.println("Start line: " + startLine);
System.out.println("End line: " + endLine);
//在开始和结束行号之间,把内容写入新的文件里
BufferedWriter writer = new BufferedWriter(new FileWriter("result.txt"));
for (int i = startLine; i <= endLine; i++) {
writer.write(readLine(file, i));
writer.newLine();
}
writer.close();
break;
}
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//获取数据的开始行号
public static int getStartLine(BufferedReader br) throws IOException {
int lineNum = -1;
while (true) {
String line = br.readLine();
lineNum++;
if (line.contains("hikvision")) {
return lineNum;
}
}
}
//获取数据的结束行号
public static int getEndLine(BufferedReader br) throws IOException {
int lineNum = -1;
while (true) {
String line = br.readLine();
lineNum++;
if (line.trim().equals("")) {
// 如果读取到空行,则认为数据截止
return lineNum - 1;
}
}
}
//读取行号对应的文件行
public static String readLine(File file, int lineNumber) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while (lineNumber-- > 0) {
reader.readLine();
}
line = reader.readLine();
reader.close();
return line;
}
}
```
在代码中,你需要将文件名替换为你想要查找数据的文件名。程序会读取文件内容,并寻找包含"hikvision"的行。一旦找到,程序会计算出数据的开始和结束行号,并把这个范围内的内容写到一个新的文件里。同时,程序会输出开始和结束行号。
阅读全文