编号的规则是年月日+00001,比如2005071800001,当天的自动增加,每天从00001开始,谢谢!

解决方案 »

  1.   

    这样还不如直接用日期生成,时间到秒不就可以了
    如果用每天的编号的话,
    有两种做法,一种是设一个静态变量在系统里,
    写一个获取id的方法
    时间比较,
    然后如果是另一天的话,id清零,不然id+1;
    另一种放在数据库里,做法相同
      

  2.   

    把文件的编号分成两部分YYYYMMdd + XXXXX。
    我觉得主要是后面的编号不好生成,前面的编号比较容易生成用Calendar类就可以了,我的想法是建立一个临时的temp.txt文件用来存放当前的日期YYYYMMdd,在每次生成新编号时用temp.txt文件的值和当前的日期进行比较,如果不相等的话XXXXX置零,并且重写temp.txt文件中存放的值为当前日期;如果相等的话XXXXX++就行了。
    最后把两部分编号加起来就OK了。
    不知道有没有更为简单的方法啊?!
      

  3.   

    static String getCurrentDate() {
    java.util.Calendar now = java.util.Calendar.getInstance();
    java.text.SimpleDateFormat yearAndMonth =
    new java.text.SimpleDateFormat("yyyy-MM-dd");
    String retString = yearAndMonth.format(now.getTime());
    return retString;
    }
    private static Object lock = new Object();
    public static void main(String[] args) throws Exception{
    String logFile = "c:\\lastFile.txt";
    File lastFile = new File(logFile);
    String strFileName = "";
    BufferedWriter file = null;
    BufferedReader input = null;
    boolean firstUsed = false; 
    try {
    synchronized (lock) 
    {
    if (!lastFile.exists()) {
    lastFile.createNewFile();
    firstUsed = true;
    }
    if (firstUsed){
    try{
    file = new BufferedWriter(new FileWriter(logFile));
    file.write(getCurrentDate() + "00000");
    } catch (Exception e){
    System.out.println(e);
    } finally{
    file.close();
    }
    }
           firstUsed = false;
    input = new BufferedReader(new FileReader(logFile));
    String strNo=input.readLine();
    strNo = strNo.substring(strNo.length()-5);
    strNo="00000"+String.valueOf(Integer.parseInt(strNo)+1);
    strNo=strNo.substring(strNo.length()-5); 
    //---------得到结果           
    strFileName = getCurrentDate()+strNo;
    file = new BufferedWriter(new FileWriter(logFile));
    file.write(strFileName);
    }
    } catch (Exception e) {
    System.out.println(e);
    }finally{
    file.close();
    input.close();
    }
    }
      

  4.   

    用getTime()不就行了?只要系统时间不错,文件就绝对不会重名
    而且可以支持一天超过10万个文件同时比较文件的新旧之类也很方便
      

  5.   

    修改了一下:
    static String getCurrentDate() {
    java.util.Calendar now = java.util.Calendar.getInstance();
    java.text.SimpleDateFormat yearAndMonth =
    new java.text.SimpleDateFormat("yyyy-MM-dd");
    String retString = yearAndMonth.format(now.getTime());
    return retString;
    }
    private static Object lock = new Object();
    public static void main(String[] args) throws Exception{
    String logFile = "c:\\lastFile.txt";
    File lastFile = new File(logFile);
    String strFileName = "";
    BufferedWriter file = null;
    BufferedReader input = null;
    boolean firstUsed = false; 
    try {
    synchronized (lock) 
    {
    if (!lastFile.exists()) {
    lastFile.createNewFile();
    firstUsed = true;
    }
    String strCurrDate = getCurrentDate();
    if (firstUsed){
    try{
    file = new BufferedWriter(new FileWriter(logFile));
    file.write(strCurrDate + "00000");
    } catch (Exception e){
    System.out.println(e);
    } finally{
    file.close();
    }
    }
           firstUsed = false;
    input = new BufferedReader(new FileReader(logFile));
    String strNo=input.readLine();
    if (strCurrDate.equals(strNo.substring(0,strNo.length()-5))){
    strNo = strNo.substring(strNo.length()-5);
    strNo="00000"+String.valueOf(Integer.parseInt(strNo)+1);
    strNo=strNo.substring(strNo.length()-5); 
    //---------得到结果           
    strFileName = strCurrDate+strNo; } else {
                                                  //---------得到结果           
    strFileName = strCurrDate+"00001";
    }
    file = new BufferedWriter(new FileWriter(logFile)); file.write(strFileName); }
    } catch (Exception e) {
    System.out.println(e);
    }finally{
    file.close();
    input.close();
    }