雷达数据文件缺报时段判断程序

package fileTest;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;


public class RadarTest {
    public static void main(String[] args) {
        
        String str = "D:\\radar";
        
        //获取文件名数组
        String[] strArray = getFileName(str);
        
        //调用getHourNoData方法输出无数据时次
        //getHourNoData(strArray);
        
        //调用getTimeslotNoData方法输出无数据时间段
        getTimeslotNoData(strArray);
    }

    //该方法得到无数据时次
    private static void getHourNoData(String[] strArray) {
        
        String ymd = null;
        for (String s : strArray){
            // 获取表示年月日的字符串
            ymd = s.substring(0, 8);
        }
        
        int[] array = new int[24];
        
        for(int i=0; i<24; i++){
            array[i] = i;
        }
        
         List<Integer> list1 = new ArrayList<Integer>();   
        
        for(int arr:array){
             list1.add(arr);
        }
         //调用getHourList方法得到所有文件的时次集合
        List<Integer> list2 = getHourList(strArray);
        
        for (Integer arr : list2) {  
             if (list1.contains(arr)) {  
                  list1.remove(arr);  
             }  
         }  
        
        for(Integer in : list1){
            System.out.println(ymd+"-"+in+"时无数据");
        }
    }

    //该方法得到所有文件的时次集合
    private static List<Integer> getHourList(String[] strArray){
        
        List<Integer> list = new ArrayList<Integer>();
        
        for(String s : strArray){
            // 获取表示小时的字符串
            String strHour = s.substring(9, 11);
            
            int hour = Integer.parseInt(strHour);
            
            list.add(hour);
        }
        return list;
    }
    
    //该方法得到没有数据的时间段
    private static void getTimeslotNoData(String[] strArray) throws NumberFormatException {
        
        for(int i=0;i<24;i++){
            
            List<Integer> list = new ArrayList<Integer>();
            
            String ymd = null;
            // 遍历
            for (String s : strArray) {
                // 获取表示(年月日_)的字符串
                ymd = s.substring(0, 9);
                // 获取表示小时的字符串
                String strHour = s.substring(9, 11);
                
                int hour = Integer.parseInt(strHour);
                // 获取表示分钟和秒的字符串
                String strms = s.substring(11, 15);
                
                int ms = Integer.parseInt(strms);
                
                if(hour == i){
                    list.add(ms);
                }    
            }
            
            int num1 = 0;
            int num2 = 0;
            int num3 = 0;
            int num4 = 0;
            int num5 = 0;
            int num6 = 0;
            
            for(Integer num : list){
                //判断是否在时间段内
                if(num>=0 && num<960){
                    num1 += 1;
                }
                if(num>=1000 && num<1959){
                    num2 += 1;
                }
                if(num>=2000 && num<2959){
                    num3 += 1;
                }
                if(num>=3000 && num<3959){
                    num4 += 1;
                }
                if(num>=4000 && num<4959){
                    num5 += 1;
                }
                if(num>=5000 && num<5959){
                    num6 += 1;
                }    
            }
            
            if(num1 == 0){
                System.out.println(ymd+i+"时0-10分钟内无数据");
            }
            if(num2 == 0){
                System.out.println(ymd+i+"时10-20分钟内无数据");
            }
            if(num3 == 0){
                System.out.println(ymd+i+"时20-30分钟内无数据");
            }
            if(num4 == 0){
                System.out.println(ymd+i+"时30-40分钟内无数据");
            }
            if(num5 == 0){
                System.out.println(ymd+i+"时40-50分钟内无数据");
            }
            if(num6 == 0){
                System.out.println(ymd+i+"时50-60分钟内无数据");
            }
            System.out.println("--------------------------");
        }
    }
        
    //该方法得到指定文件夹的所有文件名
    private static String[] getFileName(String s) {
        // 封装判断目录
        File file = new File(s);

        // 获取该目录下所有文件名的String数组
        
        String[] strArray = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                
                return new File(dir, name).isFile() && name.endsWith(".zip");
            }
        });
        return strArray;
    }
}

posted @ 2017-06-16 14:17  Jeff_Xia  阅读(153)  评论(0编辑  收藏  举报