Java读取txt文件——(二)
Txt数据
Java代码
package DRDCWordTemplates; 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>(); @Test public void readTxtData() throws Exception { String str; FileInputStream fis; fis = new FileInputStream("E:\\EclipseWorkspace\\FreeMarker\\test.txt"); // 打开文件输入流 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("--------------------------------------"); // 分割题,以[题干]分割,注意第一个前面还有一道空的 String ti[] = all.split("\\[题干\\]"); System.out.println(ti.length); // substring(start,end) 简单理解为从int开始取end-start个 for (int i=1;i<ti.length;i++) { // 提取题干 System.out.println(ti[i].substring(0, ti[i].indexOf("[类型]"))); // 提取类型 int leixing_start = ti[i].indexOf("[类型]")+4; int leixing_end = leixing_start+2; String leixing = ti[i].substring(leixing_start,leixing_end); 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); System.out.println(daan); // 提取解析 int jiexi_start = ti[i].indexOf("[解析]")+4; String jiexi = ti[i].substring(jiexi_start); 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); 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); 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); 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); 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); System.out.println(daan); // 提取解析 int jiexi_start = ti[i].indexOf("[解析]")+4; String jiexi = ti[i].substring(jiexi_start); System.out.println(jiexi); } } } }
结果:
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了