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 ...
随机推荐
- 【BZOJ3551】【BZOJ3545】 【ONTAK2010】 Peaks (kruskal重构树+主席树)
Description 在\(Bytemountains\)有\(~n~\)座山峰,每座山峰有他的高度\(~h_i~\). 有些山峰之间有双向道路相连,共\(~m~\)条路径,每条路径有一个困难值 ...
- Deep Learning(深度学习)学习笔记整理系列 一
声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部 ...
- 洛谷 P3313 [SDOI2014]旅行 解题报告
P3313 [SDOI2014]旅行 题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教 ...
- Java NIO -- 阻塞和非阻塞
传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务.因此,在完成网络通信进行 IO操作 ...
- 面试 -- requestLayout、invalidate与postInvalidate区别
requestLayout: 从方法名字可以知道,“请求布局”,那就是说,如果调用了这个方法,那么对于一个子View来说,应该会重新进行布局流程.但是,真实情况略有不同,如果子View调用了这个方法, ...
- 获取泛型的class 反射
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
- Ubuntu/Unity中更改窗口修饰键Alt为Super
在Ubuntu中的Unity桌面环境里,可以使用Alt配合鼠标左键拖动窗口,这一方便的设定有许多不方便的地方.和很多的软件有热键上的冲突,比如Visual Stdio Code的多光标控制功能. 注意 ...
- 树莓派上使用mdk3对无线热点进行DoS攻击
写在前面 你必须确保你的无线网卡支持监听模式(混淆模式),树莓派板载的无限网卡是不支持的.所以你必须额外安装一个支持监听模式的USB无线网卡. 安装mdk3 安装sudo apt install md ...
- java用poi读取Excel表格中的数据
Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版.Apache POI 代 ...
- Linux下快速分区格式化大于2T磁盘存储
在生产环境中,我们会遇到分区大于2T的磁盘(比如:添加一个10TB的存储),由于MBR分区表只支持2T磁盘,所以大于2T的磁盘必须使用GPT分区表,而我们在做raid时会划分多个VD来进行装系统,但系 ...