昨天從中電投出來,打上車直奔瀋陽北站。路上回想整個系統,忽然想起,上一篇博文《Oracle支撐的asp.net2.0應用中自主實現數據依賴緩存》中,提及“其它的能夠改變任務相關的數據的地方,也同時修改相應緩存文件的內容”,可是程序中在寫入這種緩存監視文件時,並未事先判斷其是否存在,這樣的話,一旦出現某種意外,導致緩存監視文件丟失,程序豈不是要報錯?
想到這,立馬掏出本本,打開一個以前的winform程序,在上面加一個按鈕,按鈕點擊事件中放入以下代碼測試(本本上沒裝oracle,無法測試web):
System.IO.StreamWriter sw = new System.IO.StreamWriter( Server.MapPath( "c:/Cache/10.cache" ) );
sw.WriteLine( DateTime.Now.ToString() );
sw.Close();
sw.Dispose();
運行,點擊按鈕,果然報錯~
當時再回去修改已經來不及,只能心想着祈禱不會出現文件丟失的問題吧。
今早起來,立即打開機器做這個測試:新建一個任務,刪除其緩存文件,再做查評等需要更新緩存監視文件的操作……咦,居然沒有報錯,而且還自動建立了相應的緩存監視文件!
欣喜之餘,打開MSDN查看了一下StreamWriter,關於構造函數public StreamWriter (string path),找到以下內容:
path 參數可以是文件名,包括統一命名約定 (UNC) 共享上的文件。如果此文件已存在,將覆蓋它;否則,將創建一個新文件。
HOHO~原來如此~這樣就不用擔心啦~
可是在winform程序中做的那個測試又怎麼會報錯呢?又測了一下,錯誤信息爲:
未能找到路徑“c:/Cache/10.cache”的一部分。
原來是由於沒有c:/cache目錄的原因,若改成c:/10.cache,同樣不會報錯,同樣會自動創建了。