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
[解析]我都喜欢 [题干]你是人
[类型]判断
[答案]对
[解析]因为我是人
Java读取Txt封装到对象中——(三)的更多相关文章
- java读取txt文件的2中方法---并将内容(每一行以固定的字符分割切成2段)存到map中去
#java读取txt文件的第一种方法 /** * 方法:readTxt * 功能:读取txt文件并把txt文件的内容---每一行作为一个字符串加入到List中去 * 参数:txt文件的地址 * 返回: ...
- Java读取txt文件信息并操作。
一.java读取txt文件内容 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Fi ...
- java 读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- java读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- java读取txt文件内容
package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...
- 通过反射将request中的参数封装到对象中
import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.text.SimpleDateFo ...
- java读取txt
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- Java读取txt文件
package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
随机推荐
- jdbc,mybatis,hibernate各自有优缺点以及区别
JDBC: 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,操作Connection,打开Statement对象 3,通过State ...
- day5 用户交互 input用法
death_age = 80 name= input("your name:") age= input("your age:") #inputs 接受的所有数据 ...
- day7 笔记
二进制-----> ASCLL :只能存英文和拉丁字符.-----> gb2312 :只有6700来个中文字符,1980年-----> gbk1.0 :存了2w多字符 ,1995年- ...
- python构建bp神经网络_鸢尾花分类(一个隐藏层)__1.数据集
IDE:jupyter 目前我知道的数据集来源有两个,一个是csv数据集文件另一个是从sklearn.datasets导入 1.1 csv格式的数据集(下载地址已上传到博客园----数据集.rar) ...
- MT【3】只有零向量旋转不变
解答: 评:利用了零向量方向不唯一的性质.
- 【HDU 5363】Key Set(和为偶数的子集个数)
题 Description soda has a set $S$ with $n$ integers $\{1, 2, \dots, n\}$. A set is called key set if ...
- [luogu3455][POI2007]ZAP-Queries【莫比乌斯反演】
题目描述 FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得 ...
- 洛谷 P1452 Beauty Contest 解题报告
P1452 Beauty Contest 题意 求平面\(n(\le 50000)\)个点的最远点对 收获了一堆计算几何的卡点.. 凸包如果不保留共线的点,在加入上凸壳时搞一个相对栈顶,以免把\(n\ ...
- Spring3.x 获取properties资源文件的值
Spring3.x 获取properties资源文件的值有两种方式: 第一种:使用<context:property-placeholder />标签 <context:prop ...
- spread与react
我们写react组件的过程中会遇到这个 我们知道react中的{},浏览器会知道说是以js的形式进行解析出来.那么怎么解析...props呢? 这个就涉及到es6中的扩展运算符了,我们先看下面的一些运 ...