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;
}
}