A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

具体数据如附件和截图。这是一个朋友今天给的需求,他要获取 Amplitude的数据。并且有几百个文件 ,Ctrl c+v是不可能的。
这两天我会实现它,希望大家可以相互学习

1.png (8.98 KB, 下载次数: 20)

截图

截图

2.png (206.19 KB, 下载次数: 26)

2.png

1.rar

22.09 KB, 下载次数: 103

原文件

1 个回复

倒序浏览
本帖最后由 ganjx 于 2014-10-27 21:34 编辑

下面是我的实现,过程中用了IO,正则,异常抛出没有处理,文件选择器。
总结:本来不用那么长的正则的, 只是每个数据块下面的那个符号不知道识别(并且因每个数据块的行数也不一样)

  1. package test;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileReader;
  8. import java.io.FileWriter;
  9. import java.io.IOException;
  10. import java.io.InputStreamReader;

  11. import javax.swing.JFileChooser;
  12. import javax.swing.filechooser.FileNameExtensionFilter;


  13. public class testio2 {
  14.        
  15.         /*
  16.          *
  17.          * 批量读取lis数据,最后输出到d:\outfile.txt文件,没有实现gui,只用了文件选择器,以后有时间再说了
  18.          * 下面是我的实现,过程中用了IO,正则,异常抛出没有处理,文件选择器。
  19.          * 总结:本来不用那么长的正则的, 只是每个数据块下面的那个符号不知道识别(并且因每个数据块的行数也不一样)
  20.          */
  21.        

  22.         public static void main(String[] args) throws IOException {
  23.                 // TODO Auto-generated method stub
  24.                 JFileChooser fileChooser = new JFileChooser();  
  25.                 //创建文件选择对话框
  26.                 fileChooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {  
  27.                         //过滤lis文件
  28.                         @Override  
  29.                         public String getDescription() {  
  30.                             return "*.LIS";  
  31.                         }  
  32.                                               
  33.                         @Override  
  34.                         public boolean accept(File arg0) {  
  35.                                                         return arg0.getName().endsWith(".LIS");  
  36.                                     }  
  37.                 });  
  38.                
  39.                 fileChooser.setVisible(true);
  40.                 fileChooser.setMultiSelectionEnabled(true);//设置可以选择多个文件
  41.                 int option = fileChooser.showOpenDialog(null);
  42.                
  43.                 if(option == JFileChooser.APPROVE_OPTION)
  44.                 {
  45.                        
  46.                         File[] file =fileChooser.getSelectedFiles();
  47.                         String pathname=null;
  48.                        
  49.                         MyReadFile mrf =new MyReadFile();
  50.                         //循环读取选中的文件,并运用MyReadFile的ReadFile方法
  51.                         for(int i=0;i<file.length;i++)
  52.                         {
  53.                                 pathname=file[i].getPath();
  54.                                 mrf.ReadFile(fileChooser.getSelectedFile());
  55.                         }
  56.                                                
  57.                 }

  58.         }
  59. }
  60. //实验对lis文件进行读取
  61. class MyReadFile
  62. {
  63.         public void ReadFile(File file) throws IOException
  64.         {
  65.                 FileReader fr =new FileReader(file);
  66.                 BufferedReader br =new BufferedReader(fr);
  67.                
  68.                 File outfile =new File("d:\\outfile.txt");//读取文件后存在d:\outfile.txt文件 ,
  69.                 FileWriter fw =new FileWriter(outfile,true);
  70.                 BufferedWriter bw =new BufferedWriter(fw);
  71.                
  72.                
  73.                 if(!outfile.exists())
  74.                 {
  75.                         outfile.createNewFile();
  76.                 }
  77.                 boolean flag=false;
  78.                 String ss ="";               
  79.                 int sum=0;
  80.                 while((ss =br.readLine())!=null)
  81.                 {
  82.                         ss=ss.trim();//删除头尾的空格
  83.                         if(ss.matches("\\d+\\.\\d{3}\\s+\\d+\\.\\d{3}\\s+-?\\d+\\.\\d{3}\\s+-?\\d+\\.\\d{3}E[+-]\\d{2}\\s+-?\\d+\\.\\d{3}E[+-]\\d{2}\\s+-?\\d+\\.\\d{3}E[+-]\\d{2}\\s+-?\\d+\\.\\d{3}"))//匹配数据那行才进行处理
  84.                         {
  85.                                 String[] sstt=ss.split("\\s{1,}");//以
  86.                                 bw.write(sstt[0]+" \t "+sstt[1]+" \t "+sstt[sstt.length-2]+"\r\n");//提取想要的数据               
  87.                         }                       
  88.                        
  89.                 }
  90.                 System.out.println(file.getName()+" has been read");
  91.                
  92.                 br.close();               
  93.                 fr.close();
  94.                
  95.                 bw.close();
  96.                 fw.close();
  97.         }
  98.                
  99.                
  100.        
  101. }
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马