// 搜索Txt
  public FileInfo searchTxtFile(String keyword,FileInfo fileInfo) throws IOException {
    File f = new File("/sdcard/LPR/lpr_txt/");// 这是对应文件名
    
    List<String> tempItemList = fileInfo.getItems();
    List<String> tempPathList = fileInfo.getPaths();
    List<String> tempIndexList = fileInfo.getIndexs();
    File[] fileList = f.listFiles();
    for(File fileTxt : fileList)
    {
      String tmp="";
      int i=0;
      InputStream in = new BufferedInputStream(new FileInputStream(fileTxt));
      BufferedReader br = new BufferedReader(new InputStreamReader(in, "gb2312"));
      int keyIndex = 0;
      while ((tmp = br.readLine()) != null) {
        i++;
        int temlen = tmp.indexOf(keyword);
        int subStrKeyLen = 0;
        if (temlen > -1) {
          String subStr = tmp.substring(0, temlen);
          byte[] subStrBuffer = subStr.getBytes();
          subStrKeyLen = subStrBuffer.length;
          keyIndex += subStrKeyLen;
          String keyIndexStr = String.valueOf(keyIndex+40);
          String substr = "";
          if(temlen>40)
          {
            if(temlen+keyword.length()<tmp.length()-40)
            {
              substr =  tmp.substring(temlen-40, temlen+keyword.length()+40);
            }
            else
            {
              substr =  tmp.substring(temlen-40, temlen+keyword.length());
            }
          }
          else
          {
            if(temlen>20)
            {
              if(temlen+keyword.length()<tmp.length()-50)
              {
                substr =  tmp.substring(temlen-20, temlen+keyword.length()+50);
              }
              else
              {
                substr =  tmp.substring(temlen-20, temlen+keyword.length());
              }
              
            }
            else
            {
              if(tmp.length()>keyword.length()+80)
              {
                substr =  tmp.substring(temlen, temlen+80);
              }
              else
              {
                substr = tmp;
              }
            }
          }
          tempItemList.add(fileTxt.getName()+"------"+"第"+i+"行"+"\n"+substr+"......");
          tempPathList.add(fileTxt.getPath());
          System.out.println(keyIndexStr);//此处打印的keyIndex是4295,和13160
          tempIndexList.add(keyIndexStr);
        }
        else
        {
          byte[] subStrBuffer2 = tmp.getBytes(); 
          subStrKeyLen=subStrBuffer2.length;
          keyIndex +=subStrKeyLen;
        }
      }
      br.close();
      in.close();
    }
    fileInfo.setItems(tempItemList);
    fileInfo.setPaths(tempPathList);
    fileInfo.setIndexs(tempIndexList);
    paths = fileInfo.getPaths();
    indexs = fileInfo.getIndexs();
    return fileInfo;
  }
对比:public static void main(String[] args) throws IOException { File f = new File("d:\\ipr");
File[] fileList = f.listFiles();
    for(File fileTxt : fileList)
    {
String tmp="";
      int i=0;
      String keyword = "西安";
      InputStream in = new BufferedInputStream(new FileInputStream(fileTxt));
      BufferedReader br = new BufferedReader(new InputStreamReader(in, "gb2312"));
      int keyIndex = 0;
      while ((tmp = br.readLine()) != null) {
        i++;
        int temlen = tmp.indexOf(keyword);
        int subStrKeyLen = 0;
        if (temlen > -1) {
          String subStr = tmp.substring(0, temlen);
          byte[] subStrBuffer = subStr.getBytes();
          subStrKeyLen = subStrBuffer.length;
          keyIndex += subStrKeyLen;
          String keyIndexStr = String.valueOf(keyIndex+40);
          String substr = "";
          if(temlen>40)
          {
            if(temlen+keyword.length()<tmp.length()-40)
            {
              substr =  tmp.substring(temlen-40, temlen+keyword.length()+40);
            }
            else
            {
              substr =  tmp.substring(temlen-40, temlen+keyword.length());
            }
          }
          else
          {
            if(temlen>20)
            {
              if(temlen+keyword.length()<tmp.length()-50)
              {
                substr =  tmp.substring(temlen-20, temlen+keyword.length()+50);
              }
              else
              {
                substr =  tmp.substring(temlen-20, temlen+keyword.length());
              }
              
            }
            else
            {
              if(tmp.length()>keyword.length()+80)
              {
                substr =  tmp.substring(temlen, temlen+80);
              }
              else
              {
                substr = tmp;
              }
            }
          }
          System.out.println(substr);
          System.out.println(keyIndexStr); //此处打印的的是2940,和9420
        }
        else
        {
          byte[] subStrBuffer2 = tmp.getBytes(); 
          subStrKeyLen=subStrBuffer2.length;
          keyIndex +=subStrKeyLen;
        }
      }
      br.close();
      in.close();
}
}第一段程序是android 的程序。还请帮解答,引用的是同一个txt. 
一、总体技术方案
研发的总目标是要将乘务员出入寓、干部检查、答题、记名式传达等所要用到的设备完全集成在一起,并将各个操作流程以信息化的手段进行卡控、记录和自动执行,因此方案制定时重点放在以下几个方面:工控计算机与测酒、指纹检测、IC读卡设备、打印机等外设的集成设计、测酒信号、指纹仪信号的采集处理和各个模块的流程化、自动化。这几个方面是本项目研制的重点、难点。
二、计算机软件设计流程
   计算机软件设计要考虑到很多逻辑关系,既要判断指纹,还要判断测酒是否正常才能进行下一步的操作。
1、 入寓登记
 图2 入寓登记界面
2、
3、 图一:入寓流程图
图二:入寓登记界面
2、 出寓登记
图3 出寓登记流程图图4 出寓登记界面
3、 请销假登记
图5 请销假登记流程图图6 请销假登记界面
4、 干部检查图7 干部检查界面
5、 模块化学习图8 模块化学习流程图
图9 模块化学习界面
6、 记名式传达
 
图10记名式传达流程图图11 记名式传达界面
7、 IC卡转储
 
图12 IC卡转储流程图8、 乘务管理
图13 乘务管理界面
二、主要技术原理
电源电路
220V的市电经计算机ATX电源稳压降压后输出6路电压:+5V、+12V、+3.3V、+5VSB、-5V、-12V。
作用分别如下:
+5V、+12V、+3.3V、5V、-12V为计算机主板供电。
+5VSB是在系统关闭后保留的待机电压,用于对系统唤醒的支持。
+5V为系统控制板供电。
+5V、+12V为测酒仪、打印机、读卡器和显示器部分供电。
 图14 供电电源示意图三、主要技术参数、技术性能
1、机务外寓智能管理终端外形图
图15  主机外形图2、工控计算机配置
系统内存:     1GB
系统硬盘:     250G
CPU:          奔腾双核E5300
显示屏:       19吋触摸液晶屏
3、供电电源技术参数
A、 输入电源:  AC200V~250V/3A / 50Hz           
B、 功耗:      200W
4、主机箱重量:     12Kg        
5、工作环境温度 :   0~70℃  
四、技术关键与创新
1、集成化结构设计
机务外寓智能管理终端聚合了工业控制计算机、测酒仪、摄像头、IC卡读卡器、指纹仪、打印机、触摸屏等设备,虽然系统对上述设备进行了合并、简化,但要在极小的机箱内集成上述设备的主要部分,还要完成当前机务外寓管理当中所涉及到的入寓登记、LKJ记录文件转储、乘务计划、干部查房提醒及登记、记名式传达、业务学习、答题、指导司机“十五三”对规、出寓等所有功能;所以必须对自主设备的板件尽可能的小型化,并且在设计时充分考虑到整体结构,互相配合。另外,如此多的电子构件装配在一起,互相之间干扰的防护,散热的控制都必须进行研究。经过多次论证、试验,最终采用了深圳市研祥智能科技股份有限公司生产的工业控制计算机主板,此主板采用高速奔腾双核处理器E5300。同时设备的机箱全部采用铁材料制成。前面板采用先进的激光冲洗技术,使用整个设备即美观又轻便,又满足了系统散热的要求。
2、身份验证
本系统集成了IC卡读卡器、指纹仪、摄像头于一体,对乘务员的日常管理进行了三级逻辑的判断,首先要读卡获取工号和姓名,然后进行指纹比对,最后拍照保存,所以避免了人为作弊的现象发生;三级逻辑缺一不可,确定了身份的唯一性。
3、 酒精检测
酒精检测仪是采用最新型的传感器元件,对乙醇蒸汽有很高的灵敏度和良好的选择性 ,快速的响应恢复特性,长期的寿命和可靠的稳定性,自主研发的驱动控制电路;饮酒标准:呼气酒精浓度大于20ppm,酗酒标准:呼气酒精浓度大于60ppm;下表是传感器的技术指标:气体 酒精(乙醇)
探测范围 10~ 1000ppm酒精
特征气体 125ppm酒精
灵敏度 R in air/Rin typical gas≥5
敏感体电阻 1~ 20KΩ in air空气中
响应时间 ≤10s(70% Response)
恢复时间 ≤30s(70% Response)
加热电阻 31Ω±3Ω
加热电流 ≤180mA
加热电压 5.0V±0.2V
加热功率 ≤900mW
测量电压 ≤24V
工作条件 环境温度:-20℃~+55℃
湿度:≤95%RH
环境含氧量:21%
贮存条件 温度: -20℃~+70℃
湿度:≤70%RH
加热电压 5V
测量供电电压 5V
取样电阻 750k
空气中取样电压 0.3V~0.8V
以下为部分电路图:
(1) 检测电路部分
 
(2) USB接口部分
 
(3) CPU部分 
(4) 部件接插口部分
 
4、 集成科诚高性能热敏打印机
打印机采用热转/热敏打印方式,打印速度 4 ips,打印宽度 4.25英寸,打印分辨率 203DPI,介面简单、操作容易 ,支持300公尺长效列印碳带,具有热感头温度保护控制,强大的软硬件技术支援 ,可移动式感应器 。
      打印机的详细参数如下:
打印模式 热转式 / 热感式
打印长度 最短4毫米(0.16英寸) ; 最长1727毫米(68英寸)  
内存 4MB Flash (其中2MB供用户使用), 8MB SDRAM 
感应器 反射可移动式,透射居中式 
标签规格 连续纸,标签纸,黑线标记纸及打孔标签;标签高度自动侦测或指令设定
宽度: 最窄25.4毫米(1英寸) ; 最宽118毫米(4.64英寸) 
厚度: 最薄0.06毫米(0.003英寸) ; 最厚0.25毫米(0.01英寸)
纸卷外径: 127毫米(最大 5.0英寸)
纸卷轴心:  25.4毫米(1英寸),38.1毫米(1.5英寸),76.2毫米(3英寸) 
碳带规格
材质:  一般蜡质型、混合型、抗刮树脂型 
长度:  300 m (918呎)
宽度:  30 mm至110 mm (1.18吋至4.33吋)
最大外径:  68 mm (2.67吋)
轴芯:    25.4 mm (1吋) 
程序语言
EZPL,GEPL (Godex Eltron? Printer Language), GZPL (Godex Zebra? Printer Language) 
内建字体
Bitmap字体: 6, 8, 10, 12, 14, 18, 24, 30, 16X26 and OCR A & B  
Bitmap字体打印方向可旋转角度为0°, 90°, 180°, 270°,字体可单独旋转角度为0°, 90°, 180°, 270°
Bitmap字体可水平或垂直放大8倍
向量字体(scalable font), 可旋转角度为0°, 90°, 180°, 270° 
下载字体 
可下载Bitmap字体, 打印方向可旋转角度为0°, 90°, 180°, 270°; 字体旋转角度为0°, 90°, 180°, 270°, 可水平或垂直放大8倍
可下载亚洲字体, 打印方向可旋转角度为0°, 90°, 180°, 270°, 可水平或垂直放大8倍
可下载向量字体(scalable font), 打印方向可旋转角度为0°, 90°, 180°, 270° 
Code Pages 
CODEPAGE 437, 850, 851, 852, 855, 857, 860, 861, 862, 863, 865, 866, 869, 737
WINDOWS 1250, 1251, 1252, 1253, 1254, 1255
Unicode (UTF8, UTF16) 
图形处理 
支援单色PCX、BMP,其他图文件类型可经软件控制支持 
传输接口 
Serial port: RS-232 (DB-9) 
USB port: 预设为开启
Parallel port: Centronics 36-pin 
电源 
Auto Switching 100-240VAC, 50-60Hz (交直流自动转换电源供应器) 
工作环境 
操作温度: 41°F to 104°F (5°C to 40°C)
储存温度: -4°F to 122°F (-20°C to 50°C) 
湿度 
操作湿度: 30-85%, non-condensing. 
储存湿度: 10-90%, non-condensing. 
安规 
CE(EMC), FCC Class A, CB, CCC 

5、 集成罗技视频采集摄像头
集成的高清摄像头,可以对乘务员头像进行拍照保存,避免人为作弊的发生,保证了身份的唯一性,更真实可靠。摄像头成像320×240像素,高达96DPI的分辨率,24位色深高清晰成像。带有补光设备在采光严重不良的情况下能维持图像采集的正常工作,录入软件进行比对。
6、 集成中控科技4000B指纹仪
和摄像头及IC卡读卡器协同操作,确定身份的唯一性,可靠准确,防止作弊,指纹仪的扫描范围14.6mm×18.1mm,读取范围广泛,分辨率高达512DPI,精细确认每个指纹,USB供电,无需另备工作电源。
基本规格  扫描范围   14.6mm×18.1mm 
分辨率  512dpi 
接口 兼容USB1.1。 兼容USB1.0, 1.1, 2.0 
其他规格 
电力规格 5.0V +/-25V USB提供 
支持操作系统 Windows 98, Me, NT4.0, 2000, XP 
认证 CCC 
环境条件 
工作温度(℃)  5-35 
工作湿度  20%-80%
7、 外寓信息的远程管理及卡控
本段可以与外点实现联网管理,通过网络(本机可通过网线直接接入专用网)把本段所有传达、通知、学习材料等内容能实时自动被发送至各外寓管理系统当中,并在不需要值班员干预的情况下自动更新,提示乘务员、职工及干部进行学习等活动;同时,任何一个外寓管理终端的入寓信息、出寓信息、请销假信息、测酒信息、答题等结果能及时被段内网络上的所有主管领导查询,并根据实时查询情况对各外寓的管理情况进行批示,从而将外寓纳入全段高效、严密的管理系统当中。
西安机务段
二〇一〇年十一月