zoukankan      html  css  js  c++  java
  • 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);
                }
            }
    
        }
    
    }

    结果:

  • 相关阅读:
    AX 2009 实现对display 方法过滤
    AX 2009实现数据验证方法
    AX 2009 实现outlook发送邮件并带多个附件
    AX 2009 销售订单导入导出
    Mixin技术与分布类编程
    关于python装饰器的总结
    作为软件工程师,你必须知道的20个常识
    Python装饰器基础语法总结
    如何成为一名黑客(转)
    python的对象和类
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/7275377.html
Copyright © 2011-2022 走看看