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
1 package Action.txt; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileInputStream; 6 import java.io.FileOutputStream; 7 import java.io.FileReader; 8 import java.io.InputStreamReader; 9 import java.io.OutputStreamWriter; 10 import java.io.Reader; 11 import java.util.ArrayList; 12 import java.util.List; 13 import java.util.regex.Pattern; 14 15 import org.apache.log4j.Logger; 16 import org.junit.Test; 17 18 import bean.Question; 19 20 /** 21 * 读取word上传上来的题目时候在最后多出一道空题,读取记事本编辑的上传上来的正常 22 * 23 * @author: qlq 24 * @date : 2017年7月25日上午9:04:12 25 */ 26 public class ReadTxtData { 27 private static Logger log = Logger.getLogger(ReadTxtData.class); 28 private static List<Question> list = new ArrayList<Question>(); 29 30 /** 31 * 传下来txt文件路径与名字,返回list<Question> 32 *@param fileName 33 *@return 34 *@throws Exception 35 */ 36 public static List<Question> readTxtData(String fileName) throws Exception { 37 String str; 38 FileInputStream fis; 39 // "E:\\EclipseWorkspace\\FreeMarker\\test.txt" 40 fis = new FileInputStream(fileName); // 打开文件输入流 41 BufferedReader in = new BufferedReader(new InputStreamReader(fis, "utf-8")); 42 43 // 用于保存实际读取的字符数 44 45 StringBuffer sb = new StringBuffer(); 46 // 使用循环读取数据 47 String line = ""; 48 while ((line = in.readLine()) != null) { 49 if (!line.equals("")) { 50 sb.append(line); 51 } 52 } 53 54 String all = sb.toString().trim(); 55 /* System.out.println(all); 56 System.out.println("--------------------------------------");*/ 57 // System.out.println(all.trim()); 58 // System.out.println("--------------------------------------"); 59 60 List<Question> list = new ArrayList<>(); 61 62 // 分割题,以[题干]分割,注意第一个前面还有一道空的 63 String ti[] = all.split("\\[题干\\]"); 64 // System.out.println(ti.length); 65 // substring(start,end) 简单理解为从int开始取end-start个 66 for (int i=1;i<ti.length;i++) { 67 Question question = new Question(); 68 // 提取题干 69 String tigan = ti[i].substring(0, ti[i].indexOf("[类型]")); 70 question.setTimu(tigan); 71 // System.out.println(tigan); 72 // 提取类型 73 int leixing_start = ti[i].indexOf("[类型]")+4; 74 int leixing_end = leixing_start+2; 75 String leixing = ti[i].substring(leixing_start,leixing_end); 76 question.setLeixing(leixing); 77 // System.out.println(leixing); 78 // 提取ABCD 79 if(leixing.equals("判断")){ //如果是判断题 80 // 提取答案,从[答案]后开始,取一个 81 int daan_start = ti[i].indexOf("[答案]")+4; 82 String daan = ti[i].substring(daan_start, daan_start+1); 83 question.setDaan(daan); 84 // System.out.println(daan); 85 // 提取解析 86 int jiexi_start = ti[i].indexOf("[解析]")+4; 87 String jiexi = ti[i].substring(jiexi_start); 88 question.setJiexi(jiexi); 89 // System.out.println(jiexi); 90 }else{ 91 // 提取ABCD选项: 92 int a_start = ti[i].indexOf("[A选项]")+5; 93 int a_end = ti[i].indexOf("[B选项]"); 94 String axuanxiang=ti[i].substring(a_start, a_end); 95 question.setAxuanxiang(axuanxiang); 96 // System.out.println(axuanxiang); 97 98 int b_start = ti[i].indexOf("[B选项]")+5; 99 int b_end = ti[i].indexOf("[C选项]"); 100 String bxuanxiang=ti[i].substring(b_start, b_end); 101 question.setBxuanxiang(bxuanxiang); 102 // System.out.println(bxuanxiang); 103 104 int c_start = ti[i].indexOf("[C选项]")+5; 105 int c_end = ti[i].indexOf("[D选项]"); 106 String cxuanxiang=ti[i].substring(c_start, c_end); 107 question.setCxuanxiang(cxuanxiang); 108 // System.out.println(cxuanxiang); 109 110 int d_start = ti[i].indexOf("[D选项]")+5; 111 int d_end = ti[i].indexOf("[答案]"); 112 String dxuanxiang=ti[i].substring(d_start, d_end); 113 question.setDxuanxiang(dxuanxiang); 114 // System.out.println(dxuanxiang); 115 116 // 提取答案 117 int daan_start = ti[i].indexOf("[答案]")+4; 118 int daan_end = ti[i].indexOf("[解析]"); 119 String daan = ti[i].substring(daan_start, daan_end); 120 question.setDaan(daan); 121 // System.out.println(daan); 122 // 提取解析 123 int jiexi_start = ti[i].indexOf("[解析]")+4; 124 String jiexi = ti[i].substring(jiexi_start); 125 question.setJiexi(jiexi); 126 // System.out.println(jiexi); 127 } 128 list.add(question); 129 } 130 return list; 131 132 } 133 134 @Test 135 public void test1() throws Exception{ 136 List<Question> list1 = ReadTxtData.readTxtData("C:/Users/liqiang/Desktop/1.txt"); 137 System.out.println(list1); 138 } 139 140 141 }
结果:
[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
[解析]我都喜欢
[题干]你是人
[类型]判断
[答案]对
[解析]因为我是人
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】