目前系统里的文件是用文件名+时间戳来命名的,时间是精确到毫秒级的,但是有时候由于同一时刻数据量比较集中,会出现文件名重复的问题,如:TEST_20081230152346536,也想过用纳秒级的来做,但是那个方法只支持JDK1.5的情况,现在用的是1.4的版本,所以实现不了。
我还有一个想法就是用随机数,把生成的随机数加到文件名最后,这样基本上可以解决问题,但是也会存在重复的风险。所以想请教高手有没有更好的解决办法?
我还有一个想法就是用随机数,把生成的随机数加到文件名最后,这样基本上可以解决问题,但是也会存在重复的风险。所以想请教高手有没有更好的解决办法?
public class lihan {
public static void main(String[] args) {
int[] seed=new int[100];
for(int k=0;k<100;k++)
{
seed[k]=k;
}
int [] ranArr = new int [100];
Random ran = new Random();
for(int i = 0 ; i <seed.length ; i++){
int j = ran.nextInt(seed.length-i);
ranArr [i] = seed [j];
seed [j] = seed [seed.length-1-i];
System.out.print (ranArr[i]+" ");
}
}
}
看看这个怎么样文件名加上不重复的随机数应该可以解决(这个是100以内的随机数,用的话自己改改)
public synchronize long getSystime()
{ Thread.sleep(1);
Return java.util.Calendar.getInstance().getTimeInMillis();}
{
if ( value == 0)
value = 1;
else if ( value == 999 )
value = 1;
else
value++;
return Integer.toString(value);
}写个序列,生成文件的时候遇到同名 原来文件名后面跟个.append(xxx.getSeq()).toString())
System.nanoTime();
比
System.currentTimeMillis();
精确