按时间寻找测点的程序

来源:互联网 发布:刘嘉玲康康 知乎 编辑:程序博客网 时间:2024/06/05 10:05

该代码是用来寻找规定时间内给定测点的值其中需求的 测点在文件AimPointList.txt;所有的的测点都对应一个文件,每个文件里包括时间和对应的值。

要求:

        给定需要的时间,将需要的测点放在一个文件里,将结果保存成一个文件。

思路:

      1.读取目标测点文件,保存在集合里;

       2,遍历集合,找对应测点的文件

      3,根据对应时间,找出时间相等,或上一个时间点和下一个时间点的对应值的平均值

4,将结果输出到文本import java.io.BufferedReader;

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileFilter;import java.io.FileReader;import java.io.FileWriter;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;public class insertmethod {public static File file2  = new File("G:\\FindPointBytime\\FindPointBytile\\result.txt");public static File allCeName  = new File("G:\\FindPointBytime\\FindPointBytile\\Float32_7#.txt"); //所有测点的文件public static File needCeName  = new File("G:\\FindPointBytime\\FindPointBytile\\AimPointList.txt"); // 有需要测点的文件static int countFiles = 0;// 声明统计文件个数的变量    static int countFolders = 0;// 声明统计文件夹的变量    public static DateFormat dateFormat= new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");@SuppressWarnings("deprecation")public static Date dataneed =new Date("2015/12/1 23:59:10");public static Date data;public static long a;public static double dob;    public static ArrayList<String>aimlist;    public static ArrayList<Long>list;    public static ArrayList<Double>str;    public static String[] stringname={};    public static int j=0;    public static double k=0;        public static File[] searchFile(File folder, final String keyWord) {// 递归查找包含关键字的文件         File[] subFolders = folder.listFiles(new FileFilter() {// 运用内部匿名类获得文件            public boolean accept(File pathname) {// 实现FileFilter类的accept方法                if (pathname.isFile())// 如果是文件                    countFiles++;                else                    // 如果是目录                    countFolders++;                if (pathname.isDirectory()                        || (pathname.isFile() && pathname.getName().toLowerCase().contains(keyWord.toLowerCase())))// 目录或文件包含关键字                    return true;                return false;            }        });         List<File> result = new ArrayList<File>();// 声明一个集合        for (int i = 0; i < subFolders.length; i++) {// 循环显示文件夹或文件            if (subFolders[i].isFile()) {// 如果是文件则将文件添加到结果列表中                result.add(subFolders[i]);            } else {// 如果是文件夹,则递归调用本方法,然后把所有的文件加到结果列表中                File[] foldResult = searchFile(subFolders[i], keyWord);                for (int j = 0; j < foldResult.length; j++) {// 循环显示文件                    result.add(foldResult[j]);// 文件保存到集合中                }            }        }         File files[] = new File[result.size()];// 声明文件数组,长度为集合的长度        result.toArray(files);// 集合数组化        return files;    }     public static String timeFind(File src) throws Exception {long diff=0;list=new ArrayList<Long>();str=new ArrayList<Double>();BufferedReader bReader = new BufferedReader(new FileReader(src)); for (String line = bReader.readLine();line!= null;line = bReader.readLine()) {//读取每一行if (line.hashCode() !=0 ) {String[] sssString =  line.split("\t");Date date1=dateFormat.parse(sssString[0]);String aString=sssString[1];if(aString.endsWith("System.__ComObject")){aString="0";}double ad=Double.parseDouble(aString);diff = date1.getTime() - dataneed.getTime();if((a<0&&diff>0)||(diff==0)){k=((dob+ad)/2);System.out.println("result is:**"+((dob+ad)/2)+"***");}a=diff;dob=ad;}}String kkString=Double.toString(k);return kkString;}    public static void main(String[] args) throws Exception {File folder = new File("G:\\FindPointBytime\\FindPointBytile\\pointValueFile");// 默认目录aimlist=new ArrayList<String>();//寻找测点BufferedReader bReader = new BufferedReader(new FileReader(needCeName)); for (String line = bReader.readLine();line!= null;line = bReader.readLine()) {  //读取每一行if (line.hashCode() !=0 ) {String[] sssString =  line.split("\t");String aim=sssString[0];aimlist.add(aim);}}//提取出需要检测文件的绝对路径String strname = ""; Iterator<String> iterator = aimlist.iterator();BufferedWriter bwWriter=new BufferedWriter(new FileWriter(file2));while(iterator.hasNext()){String keyword = iterator.next();strname=keyword;bwWriter.write(strname+"\t");bwWriter.flush();if (!folder.exists()) {// 如果文件夹不存在            System.out.println("目录不存在:" + folder.getAbsolutePath());           return;        }        File[] result = searchFile(folder, keyword);// 调用方法获得文件数组       for (int i = 0; i < result.length; i++) {// 循环显示文件       File file = result[i];              String kk=timeFind(new File(file.getAbsolutePath()));       bwWriter.write(kk+"\t");bwWriter.newLine();       System.out.println("---------------------------------");           }}        bwWriter.flush();//end for    bwWriter.close();    }  }




1 0
原创粉丝点击