Java读取Txt封装到对象中——(三)

JavaBean

package bean;

public class Question {

    private String timu; //题干
private String leixing; //类型
private String axuanxiang; //A选项
private String bxuanxiang; //B选项
private String cxuanxiang; //C选项
private String dxuanxiang; //D选项
private String daan; //答案
private String jiexi; //解析
public String getTimu() {
return timu;
}
public void setTimu(String timu) {
this.timu = timu;
}
public String getLeixing() {
return leixing;
}
public void setLeixing(String leixing) {
this.leixing = leixing;
} public String getAxuanxiang() {
return axuanxiang;
}
public void setAxuanxiang(String axuanxiang) {
this.axuanxiang = axuanxiang;
}
public String getBxuanxiang() {
return bxuanxiang;
}
public void setBxuanxiang(String bxuanxiang) {
this.bxuanxiang = bxuanxiang;
}
public String getCxuanxiang() {
return cxuanxiang;
}
public void setCxuanxiang(String cxuanxiang) {
this.cxuanxiang = cxuanxiang;
}
public String getDxuanxiang() {
return dxuanxiang;
}
public void setDxuanxiang(String dxuanxiang) {
this.dxuanxiang = dxuanxiang;
}
public String getDaan() {
return daan;
}
public void setDaan(String daan) {
this.daan = daan;
}
public String getJiexi() {
return jiexi;
}
public void setJiexi(String jiexi) {
this.jiexi = jiexi;
}
@Override
public String toString() {
return "Question [timu=" + timu + ", leixing=" + leixing + ", axuanxiang=" + axuanxiang + ", bxuanxiang="
+ bxuanxiang + ", cxuanxiang=" + cxuanxiang + ", dxuanxiang=" + dxuanxiang + ", daan=" + daan
+ ", jiexi=" + jiexi + "]";
}
public Question(String timu, String leixing, String axuanxiang, String bxuanxiang, String cxuanxiang,
String dxuanxiang, String daan, String jiexi) {
super();
this.timu = timu;
this.leixing = leixing;
this.axuanxiang = axuanxiang;
this.bxuanxiang = bxuanxiang;
this.cxuanxiang = cxuanxiang;
this.dxuanxiang = dxuanxiang;
this.daan = daan;
this.jiexi = jiexi;
}
public Question() {
super();
} }

 读取txt封装对象的Java

 package Action.txt;

 import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern; import org.apache.log4j.Logger;
import org.junit.Test; import bean.Question; /**
* 读取word上传上来的题目时候在最后多出一道空题,读取记事本编辑的上传上来的正常
*
* @author: qlq
* @date : 2017年7月25日上午9:04:12
*/
public class ReadTxtData {
private static Logger log = Logger.getLogger(ReadTxtData.class);
private static List<Question> list = new ArrayList<Question>(); /**
* 传下来txt文件路径与名字,返回list<Question>
*@param fileName
*@return
*@throws Exception
*/
public static List<Question> readTxtData(String fileName) throws Exception {
String str;
FileInputStream fis;
// "E:\\EclipseWorkspace\\FreeMarker\\test.txt"
fis = new FileInputStream(fileName); // 打开文件输入流
BufferedReader in = new BufferedReader(new InputStreamReader(fis, "utf-8")); // 用于保存实际读取的字符数 StringBuffer sb = new StringBuffer();
// 使用循环读取数据
String line = "";
while ((line = in.readLine()) != null) {
if (!line.equals("")) {
sb.append(line);
}
} String all = sb.toString().trim();
/* System.out.println(all);
System.out.println("--------------------------------------");*/
// System.out.println(all.trim());
// System.out.println("--------------------------------------"); List<Question> list = new ArrayList<>(); // 分割题,以[题干]分割,注意第一个前面还有一道空的
String ti[] = all.split("\\[题干\\]");
// System.out.println(ti.length);
// substring(start,end) 简单理解为从int开始取end-start个
for (int i=1;i<ti.length;i++) {
Question question = new Question();
// 提取题干
String tigan = ti[i].substring(0, ti[i].indexOf("[类型]"));
question.setTimu(tigan);
// System.out.println(tigan);
// 提取类型
int leixing_start = ti[i].indexOf("[类型]")+4;
int leixing_end = leixing_start+2;
String leixing = ti[i].substring(leixing_start,leixing_end);
question.setLeixing(leixing);
// System.out.println(leixing);
// 提取ABCD
if(leixing.equals("判断")){ //如果是判断题
// 提取答案,从[答案]后开始,取一个
int daan_start = ti[i].indexOf("[答案]")+4;
String daan = ti[i].substring(daan_start, daan_start+1);
question.setDaan(daan);
// System.out.println(daan);
// 提取解析
int jiexi_start = ti[i].indexOf("[解析]")+4;
String jiexi = ti[i].substring(jiexi_start);
question.setJiexi(jiexi);
// System.out.println(jiexi);
}else{
// 提取ABCD选项:
int a_start = ti[i].indexOf("[A选项]")+5;
int a_end = ti[i].indexOf("[B选项]");
String axuanxiang=ti[i].substring(a_start, a_end);
question.setAxuanxiang(axuanxiang);
// System.out.println(axuanxiang); int b_start = ti[i].indexOf("[B选项]")+5;
int b_end = ti[i].indexOf("[C选项]");
String bxuanxiang=ti[i].substring(b_start, b_end);
question.setBxuanxiang(bxuanxiang);
// System.out.println(bxuanxiang); int c_start = ti[i].indexOf("[C选项]")+5;
int c_end = ti[i].indexOf("[D选项]");
String cxuanxiang=ti[i].substring(c_start, c_end);
question.setCxuanxiang(cxuanxiang);
// System.out.println(cxuanxiang); int d_start = ti[i].indexOf("[D选项]")+5;
int d_end = ti[i].indexOf("[答案]");
String dxuanxiang=ti[i].substring(d_start, d_end);
question.setDxuanxiang(dxuanxiang);
// System.out.println(dxuanxiang); // 提取答案
int daan_start = ti[i].indexOf("[答案]")+4;
int daan_end = ti[i].indexOf("[解析]");
String daan = ti[i].substring(daan_start, daan_end);
question.setDaan(daan);
// System.out.println(daan);
// 提取解析
int jiexi_start = ti[i].indexOf("[解析]")+4;
String jiexi = ti[i].substring(jiexi_start);
question.setJiexi(jiexi);
// System.out.println(jiexi);
}
list.add(question);
}
return list; } @Test
public void test1() throws Exception{
List<Question> list1 = ReadTxtData.readTxtData("C:/Users/liqiang/Desktop/1.txt");
System.out.println(list1);
} }

结果:

[Question [timu=你喜欢什么, leixing=单选, axuanxiang=方便吗, bxuanxiang=垃圾, cxuanxiang=牛肉, dxuanxiang=大饼, daan=A, jiexi=因为我喜欢大饼], Question [timu=你喜欢什么, leixing=多选, axuanxiang=篮球, bxuanxiang=足球, cxuanxiang=羽毛球, dxuanxiang=美女, daan=ABCD, jiexi=我都喜欢], Question [timu=你是人, leixing=判断, axuanxiang=null, bxuanxiang=null, cxuanxiang=null, dxuanxiang=null, daan=对, jiexi=因为我是人], Question [timu=你喜欢什么, leixing=单选, axuanxiang=方便吗, bxuanxiang=垃圾, cxuanxiang=牛肉, dxuanxiang=大饼, daan=A, jiexi=因为我喜欢大饼], Question [timu=你喜欢什么, leixing=多选, axuanxiang=篮球, bxuanxiang=足球, cxuanxiang=羽毛球, dxuanxiang=美女, daan=ABCD, jiexi=我都喜欢], Question [timu=你是人, leixing=判断, axuanxiang=null, bxuanxiang=null, cxuanxiang=null, dxuanxiang=null, daan=对, jiexi=因为我是人], Question [timu=你喜欢什么, leixing=单选, axuanxiang=方便吗, bxuanxiang=垃圾, cxuanxiang=牛肉, dxuanxiang=大饼, daan=A, jiexi=因为我喜欢大饼], Question [timu=你喜欢什么, leixing=多选, axuanxiang=篮球, bxuanxiang=足球, cxuanxiang=羽毛球, dxuanxiang=美女, daan=ABCD, jiexi=我都喜欢], Question [timu=你是人, leixing=判断, axuanxiang=null, bxuanxiang=null, cxuanxiang=null, dxuanxiang=null, daan=对, jiexi=因为我是人], Question [timu=你喜欢什么, leixing=单选, axuanxiang=方便吗, bxuanxiang=垃圾, cxuanxiang=牛肉, dxuanxiang=大饼, daan=A, jiexi=因为我喜欢大饼], Question [timu=你喜欢什么, leixing=多选, axuanxiang=篮球, bxuanxiang=足球, cxuanxiang=羽毛球, dxuanxiang=美女, daan=ABCD, jiexi=我都喜欢], Question [timu=你是人, leixing=判断, axuanxiang=null, bxuanxiang=null, cxuanxiang=null, dxuanxiang=null, daan=对, jiexi=因为我是人]]

1.txt

[题干]你喜欢什么
[类型]单选
[A选项]方便吗
[B选项]垃圾
[C选项]牛肉
[D选项]大饼
[答案]A
[解析]因为我喜欢大饼 [题干]你喜欢什么
[类型]多选
[A选项]篮球
[B选项]足球
[C选项]羽毛球
[D选项]美女
[答案]ABCD
[解析]我都喜欢 [题干]你是人
[类型]判断
[答案]对
[解析]因为我是人 [题干]你喜欢什么
[类型]单选
[A选项]方便吗
[B选项]垃圾
[C选项]牛肉
[D选项]大饼
[答案]A
[解析]因为我喜欢大饼 [题干]你喜欢什么
[类型]多选
[A选项]篮球
[B选项]足球
[C选项]羽毛球
[D选项]美女
[答案]ABCD
[解析]我都喜欢 [题干]你是人
[类型]判断
[答案]对
[解析]因为我是人 [题干]你喜欢什么
[类型]单选
[A选项]方便吗
[B选项]垃圾
[C选项]牛肉
[D选项]大饼
[答案]A
[解析]因为我喜欢大饼 [题干]你喜欢什么
[类型]多选
[A选项]篮球
[B选项]足球
[C选项]羽毛球
[D选项]美女
[答案]ABCD
[解析]我都喜欢 [题干]你是人
[类型]判断
[答案]对
[解析]因为我是人 [题干]你喜欢什么
[类型]单选
[A选项]方便吗
[B选项]垃圾
[C选项]牛肉
[D选项]大饼
[答案]A
[解析]因为我喜欢大饼 [题干]你喜欢什么
[类型]多选
[A选项]篮球
[B选项]足球
[C选项]羽毛球
[D选项]美女
[答案]ABCD
[解析]我都喜欢 [题干]你是人
[类型]判断
[答案]对
[解析]因为我是人
上一篇:【原创】手动导入SQLServer数据到SQLCE方法


下一篇:java8中规范的四大函数式接口