日期:2014-05-20  浏览次数:20651 次

如何得到.properties配置文件的下一行记录
我的DateConfig.properties文件的内容是:
2008-07-17=2008-07-17 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-18=2008-07-18 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-21=2008-07-21 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-22=2008-07-22 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-23=2008-07-23 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-24=2008-07-24 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-25=2008-07-25 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-28=2008-07-28 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-29=2008-07-29 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-30=2008-07-30 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-07-31=2008-07-31 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-08-01=2008-08-01 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-08-04=2008-07-04 09\:30\:00 11\:30 13\:00\:00 15\:00
2008-08-05=2008-07-05 09\:30\:00 11\:30 13\:00\:00 15\:00


下面的方法意思是当我输入某个日期以后,从配置文件中匹配,如果存在这个日期,就返回这一行的记录的数组,如:我输入“2008-07-18”,就会返回“2008-07-18=2008-07-18 09\:30\:00 11\:30 13\:00\:00 15\:00”这一条记录;现在我想要的是,如何得到它的下一条记录,如:我我输入“2008-07-18”,返回的是2008-07-21=2008-07-21 09\:30\:00 11\:30 13\:00\:00 15\:00这条记录,请大家帮帮忙,知道的告诉我一下,谢谢!!
public String[] getRunDateTime(String date) {

String[] dateArray=null;
try {
Properties pro = new Properties();
InputStream in =getClass().getResourceAsStream("DateConfig.Properties");
//加载输入流
pro.load(in);
//得到一个键值
String dateString = pro.getProperty(date);
if(dateString!=null){
StringTokenizer token = new StringTokenizer(dateString);
dateArray = new String[token.countTokens()];
for (int j = 0; token.hasMoreTokens(); j++) {
dateArray[j] = token.nextToken();
}
}
} catch (Exception e) {
System.out.println("得到配置文件中的日期时发生了异常");
e.printStackTrace();
}
return dateArray;
}

------解决方案--------------------
Java code

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;

public class GetDate 
{
    private String date = "2008-07-18";
    
    private Comparator comp = new Comparator()
    {
        public int compare(Object o1, Object o2) 
        {
            String val1 = o1.toString();
            String val2 = o2.toString();
            if (val1 == null && val2 == null ) 
            {
                return 0;
            } else if (val1 == null && val2 != null ) 
            {
                return -1;
            } else if (val1 != null && val2 == null ) 
            {
                return 1;
            } 
            return val1.trim().compareToIgnoreCase(val2.trim() );
        }
        public boolean equals(Object obj) {
            return true;
        } 
    };
    
    public void getRunDate()
    {
        Properties pro = new Properties();
        
        InputStream in = this.getClass().getResourceAsStream("DateConfig.properites");
        
        
        try
        {
            pro.load(in);
            Enumeration en = pro.propertyNames();
            List list = new ArrayList();
            while(en.hasMoreElements())
            {
                list.add(en.nextElement());
            }
            Collections.sort(list, comp);
            
            int index = list.indexOf(this.date);
            
            if(index == -1)
            {
                System.out.print("你输入的日期有误.");
            }
            else if(index == list.size() - 1)
            {
                System.out.print("你输入的日期是最后的一个日期.");
            }
            else
            {
                String key = list.get(index + 1).toString();
                System.out.print(key + "=" + pro.getProperty(key));
            }
            
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) 
    {
        GetDate gd = new GetDate();
        
        gd.getRunDate();
    }

}