用java代码实现读取一个文件中所以的txt文件逐行读取txt文件中的内容清除所以空格和换行,判断如果等于字符串[INTRO]时,之后的读取内容方式改为两行读取内容,内容不能为空格和换行,如果等于字符串优待政策时,就改为多行读取,结束标记为服务设施,如果等于字符串服务设施时,就改为多行读取,结束标记为[GRADE],如果等于字符串[GRADE]时,就按照逐行读取内容,最后将这些数据放入数据库中
时间: 2024-03-20 18:42:12 浏览: 70
以下Java代码实现读取文件中的内容,并根据不同的标记进行不同的读取方式和处理:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ReadFile {
public static void main(String[] args) {
String filePath = "file.txt"; // 文件路径
String line;
String introContent = ""; // [INTRO]标记后的内容
String policyContent = ""; // [优待政策]标记后的内容
String facilityContent = ""; // [服务设施]标记后的内容
String gradeContent = ""; // [GRADE]标记后的内容
boolean isIntro = false; // 是否已经读取到[INTRO]
boolean isPolicy = false; // 是否已经读取到[优待政策]
boolean isFacility = false; // 是否已经读取到[服务设施]
boolean isGrade = false; // 是否已经读取到[GRADE]
boolean isContent = false; // 是否正在读取内容
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
while ((line = br.readLine()) != null) {
// 清除空格和换行
line = line.replaceAll("\\s", "");
if (line.equals("[INTRO]")) {
isIntro = true;
isContent = false;
} else if (line.equals("优待政策")) {
isPolicy = true;
isContent = false;
} else if (line.equals("服务设施")) {
isFacility = true;
isContent = false;
} else if (line.equals("[GRADE]")) {
isGrade = true;
isContent = false;
} else if (!line.isEmpty()) { // 如果不是空行
if (isIntro) { // [INTRO]后的内容
if (!isContent) {
introContent += line; // 读取第一行
isContent = true;
} else {
introContent += line; // 读取第二行
isIntro = false;
}
} else if (isPolicy || isFacility || isGrade) { // 多行读取
if (!line.equals("服务设施") && !line.equals("[GRADE]")) {
if (!isContent) {
isContent = true;
} else {
policyContent += "\n";
facilityContent += "\n";
gradeContent += "\n";
}
policyContent += line;
facilityContent += line;
gradeContent += line;
} else {
isPolicy = false;
isFacility = false;
isGrade = false;
isContent = false;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
// 将数据存入数据库
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
PreparedStatement ps = conn.prepareStatement("INSERT INTO test_data (intro, policy, facility, grade) VALUES (?, ?, ?, ?)");) {
ps.setString(1, introContent);
ps.setString(2, policyContent);
ps.setString(3, facilityContent);
ps.setString(4, gradeContent);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
需要注意的是,这段代码中的数据库连接和表名等需要根据实际情况进行修改。
阅读全文