唾手可得的宝藏:Mono源码

| |
[不指定 2007/08/15 18:31 | by ipaddr ]
“源码是最好的文档”,有了源码,任何软件系统在开发人员面前就毫无“神秘”可言了...

今天需要做一个上传文件的Web页面,在调用HttpPostedFile.SaveAs(String filename)方法将文件写到服务器磁盘上时,想到如果此文件已经存在于磁盘上,这个方法会如何处理呢?直接覆盖?抛出异常?

翻一下.NET Framework文档,可惜里面没有对这个情况进行说明。于是进入Mono源码目录,定位到HttpPostedFile.cs文件,用记事本打开,找到SaveAs(String filename)方法,第一句就是:

FileStream File = new FileStream(filename, FileMode.Create);

OK,确切答案就是如果已经存在同名文件会直接覆写。

我猜一定有人会想,“万一Mono的实现和.Net Framework不同怎么办?”其实我过后就这么想了,于是用Reflector打开了System.Web.dll,定位这个方法,呵呵,.Net Framework的实现也是“FileMode.Create”。不过.Net Framework使用了一个try...catch来保证关闭这个FileStream,而Mono的实现里面则没有,嗯,这是不是意味着Mono的稳定性仍有不少改进之处呢?
Program | 评论(0) | 引用(0) | 阅读(7212)