随机文件名生成方法

转载 2007年09月14日 10:08:00
利用 当前时间与2000-1-1 0:0:0 相差的毫秒数转成36进制字符串 加上4位随机字符串 生成一个随机文件名. 算是长度比较短而唯一性比较高的随机文件名生成方法了.

实测1,000,000 * 100次, 平均每生成1,000,000个随机文件名耗时0.3秒. (测试平台:Dell 640M, T2300, XPSP2)

<script type="text/javascript">google_ad_client = "pub-2048279401139630";google_ad_slot = "8856771542";google_ad_width = 728;google_ad_height = 90;document.write("<s"+"cript type='text/javascript' s"+"rc='http://pagead2.googlesyndication.com/pagead/show_ads"+"."+"js'></scr"+"ipt>");</script>
private static string charDictionary = "0123456789abcdefghijklmnopqrstuvwxyz";

#region GetRandomString
public static string GetRandomString(int length)
{
    
return GetRandomString(new Random(), length);
}

public static string GetRandomString(string dictionary, int length)
{
    
return GetRandomString(new Random(), dictionary, length);
}

public static string GetRandomString(Random r, int length)
{
    
return GetRandomString(r, charDictionary, length);
}

public static string GetRandomString(Random r, string dictionary, int length)
{
    
if(r == null)
    {
        r 
= new Random();
    }

    StringBuilder sb 
= new StringBuilder();
    
char[] chars = dictionary.ToCharArray();

    
for(int i = 0; i < length; i++)
    {
        sb.Append(chars[r.Next(
0, chars.Length)]);
    }

    
return sb.ToString();
}
#endregion

#region GetRandomFileName
public static string GetRandomFileName()
{
    
return GetRandomFileName(new Random());
}

public static string GetRandomFileName(Random r)
{
    
long timeSpan = (long)(DateTime.Now - new DateTime(200011)).TotalMilliseconds;
    
string fileName = ConvertToRadix(timeSpan, 36);
    fileName 
+= GetRandomString(r, 4);
    
return fileName.ToLower();
}
#endregion

#region ConvertToRadix
public static string ConvertToRadix(long number, byte scale)
{
    
if(scale < 2 || scale > 36)
    {
        
throw new Exception("Scale number must not be less than 2 and bigger then 36.");
    }

    
char[] dictionary = charDictionary.ToCharArray();
    List
<char> charList = new List<char>();
    
long positive = Math.Abs(number);

    
for(int i = 0; i < 64; i++)
    {
        
if(positive == 0)
        {
            
break;
        }

        charList.Add(dictionary[positive 
% scale]);
        positive 
/= scale;
    }

    charList.Reverse();
    
return new string(charList.ToArray());
}
#endregion
 <script type="text/javascript">google_ad_client = "pub-2048279401139630";google_ad_slot = "8856771542";google_ad_width = 728;google_ad_height = 90;document.write("<s"+"cript type='text/javascript' s"+"rc='http://pagead2.googlesyndication.com/pagead/show_ads"+"."+"js'></scr"+"ipt>");</script>

随机生成文件名

根据需求需要,需要写一个随机文件名生成器,文件名不过是不能有重复的,因为做的是spark工程,输出路劲不能有重复,根据文件名的命名规则,开头为大写字母,结尾是数字,为了增加复杂性,引入了下划线“_”,...
  • he_min
  • he_min
  • 2016年09月01日 20:23
  • 1281

如何在Linux系统通过命令行生成随机文件

是否会有这样的场景:在有需要测试数据的时候,你不知如何生成一些已包含测试数据的文件;或者你是临时需要一个小的程序,可以让你生成不同大小的文件(比如大于1Mb少于100Mb),不需要从网络上去搜寻查找如...
  • tengxy_cloud
  • tengxy_cloud
  • 2016年08月26日 15:50
  • 2241

[原创]Loadrunner下载文件,并自动生成不重复的文件名

本文为本人原创,转载请注明文章出处和作者:Cheers.Lee     以前转载过一篇文章“如何让Loadrunner下载文件并保存在本地” ,这篇文章作为对那片文章的补充和深入,如有不足之处,欢迎大...
  • achang21
  • achang21
  • 2013年09月15日 10:17
  • 913

生成唯一文件名不同方法

生成唯一文件名不同方法
  • huwei2003
  • huwei2003
  • 2016年10月26日 16:15
  • 1261

随机分形地形生成

a.最近在学习OpenGL的东西时,无意发现了一篇关于”分形“的文章。”分形“由于以前接触过一点,记得和”过程内容生成“有莫大的关系,它强大而神奇的功能一直让我很好奇。看了原文作者的这篇文章后,我断定...
  • flame99999
  • flame99999
  • 2013年12月02日 20:38
  • 1161

生成随机数三种方式 OC

1)、arc4random() 比较精确不需要生成随即种子        使用方法 :                  通过arc4random() 获取0到x-1之间的整数的代码如下:   ...
  • kingcodexl
  • kingcodexl
  • 2015年12月11日 13:36
  • 3841

java生成随机数的两种方式

【方法一】 调用 util 中的 Random 类:定义Random的对象 rand,用 rand.nextInt()生成随机整数 或者将 next 后面的Int改为 Double,F...
  • chaiwenjun000
  • chaiwenjun000
  • 2015年06月07日 09:22
  • 2247

Java 实现产生随机不重复的数组

java 产生不重复的随机数,部分从网上复制,存在一定问题后续继续完善。链接以供学习。...
  • u012199982
  • u012199982
  • 2016年10月31日 19:38
  • 300

GCC常用编译选项

gcc option分类介绍http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Option-Summary.html -x language filename ...
  • u012385733
  • u012385733
  • 2014年07月17日 09:12
  • 1303

ios 生成不重复随机数

一、先讲下ios三种取随机数的方法: 1.    srand((unsigned)time(0));  //不加这句每次产生的随机数不变         int i = rand() % 5;   ...
  • jiajiayouba
  • jiajiayouba
  • 2015年02月03日 15:58
  • 16762
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随机文件名生成方法
举报原因:
原因补充:

(最多只允许输入30个字)