按时间寻找测点的程序

该代码是用来寻找规定时间内给定测点的值其中需求的 测点在文件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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值