用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
ericfine的公告
<script language="JavaScript" charset="gb2312" type="text/javascript" src="http://www1.itsun.com/counter.php?uuid=1490761&style=text"></script><script src='http://s61.cnzz.com/stat.php?id=235882&web_id=235882' language='JavaScript' charset='gb2312'></script> <h3>自定义部分</h3> <ul> <li><a href="http://dev.csdn.net/user/ericfine">我的文档中心</A> </ul> <!--<script>location.href="http://ericfine.cnblogs.com/"</script> -->
文章分类
私人收藏
Eastasp .Net 电子书下载
Eric's Bloggy (ericfine.cnblogs.com)(RSS)
肖总的博客
豆豆技术网
友情连接
Notus小弟的Blog
一个朋友的盗链网 -_- 混PR的
冰凌堂の冰
木子的程序生涯 (姐姐哦!)
笨猫博客
老猫的理想
蛙蛙池塘
阿好空间
资源网站
ConnectionStrings
Devolutions
HTML-Reference
MSDN
MSDN -China
MSDN -Taiwan
Online Book Samples
W3 Schools
存档

原创  Eric 的随机文件名 生成方法 收藏

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

        private static string charDictionary = "0123456789abcdefghijklmnopqrstuvwxyz";

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


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


        
public static string GetRandomFileName(Random r)
        
{
            
string fileName = ConvertToRadix(GetTimeSpan("f"), 36);
            fileName 
+= GetRandomString(r, 4);
            
return fileName.ToLower();
        }


        
internal static long GetTimeSpan(string dateTimePart)
        
{
            
long now = DateTime.Now.Ticks;
            
long begin = DateTime.Parse("2000-1-1 0:0:0").Ticks;
            
long timeSpan = now - begin;

            
switch(dateTimePart.ToLower())
            
{
                
case "f":
                    timeSpan 
= timeSpan / TimeSpan.TicksPerMillisecond;
                    
break;
                
case "s":
                    timeSpan 
= timeSpan / TimeSpan.TicksPerSecond;
                    
break;
                
case "m":
                    timeSpan 
= timeSpan / TimeSpan.TicksPerMinute;
                    
break;
                
case "h":
                    timeSpan 
= timeSpan / TimeSpan.TicksPerHour;
                    
break;
                
case "d":
                    timeSpan 
= timeSpan / TimeSpan.TicksPerDay;
                    
break;
                
default:
                    timeSpan 
= 0;
                    
break;
            }


            
return timeSpan;
        }


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

发表于 @ 2007年05月27日 23:42:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:用于下载HTML中远程图片的方法 | 新一篇:Eric的模板引擎 EFPlatform.CodeGenerator

  • 发表评论
  • 评论内容:
  •  
Copyright © ericfine
Powered by CSDN Blog