2008年4月22日 星期二

點名...點個頭阿

反正大學同學太無聊
那就當作浪費網路資源吧
大家來傳=w=
點名 = =

遊戲規則:
A. 被點到名字的要在自己的blog裏寫下自己的答案,然後去掉一個你最不喜歡的問題
再加上一個你的問題,仍然組成20個問題,傳給其他8個人,列出其他8個需要回答問題的人的名字
還要到這8個人的blog裏留言通知對方——你被點名了,被點名者不得拒絕回答問題,完成遊戲的人
將會永遠得到大家的祝福。
B.這8個人要在自己的blog裏註明是從哪裡接到的,並且再傳給其他8個人,讓遊戲繼續下去,
不得回傳。被點到名字的人將會得到大家的祝福,並且所有美好的願望都會在不久的將來實現。

************************************************************************
源自: 惡魔西皮!

1.你認為分手後的男女朋友還能做普通朋友嗎?
50%對我來說是可能的
可是對方我就不知道了

2.最近最鬱悶的事?
工作好煩

3.遇到喜歡的人,你是勇敢表白還是默默關注?
默默關注(同蟑螂)
所以現在還在單身

4.例舉三樣正在學習, or 想要學習的東西
賺錢 + 為人處世ing + 克制

5.說出點你名的人的3個優點(不可刪除題)
老實 長得高

6.現在最想去的國家?←被我新增的題目
美國

7.愛人和被人愛,哪一種更幸福?
被愛

8.你現在最想擁有的是什麼?
啥都不用想

9.你的夢想是什麼?
世界到處跑

10.過去十年你最開心的時刻?  
第一次爬上大山

11.你最嚮往的生活?
正常上下班 放假出去玩

12.和戀人/老公/老婆吵架後,通常多久/幾天和好?
不知道沒試過

13.最愛的經典電影...
click

14.如何才可以停止總是開始又結束的感情故事??
當下個感情開始時就停止了

15.當你無聊的時候,你會先想到誰呢?
高中同學,大學同學

16.你覺得什麼才叫做真正的好朋友?<=刪除
16.你覺得怎樣才是最好的人生
當你懈怠時有挑戰,當你衝刺後有平靜,當你休息後有刺激,當你忙碌後有慶祝

17.不論單身或已婚,人生裡面最想實現的「自我」是甚麼?
被需要

18.當你覺得徬徨無助的時候都怎麼辦呢?
問所有人

19.你對另一半(老公,老婆,男女朋友)最不能忍受的事情是...?  
不知還沒有碰過

20.開始寫部落格的原因  
當記事本XD

以下名單 是被我點到的名單,
姵如 小魚 昱仁

2008年4月1日 星期二

一次刪除XX資料夾下所有檔案

原發問問題:



asp.net 刪不了目錄

Dim file() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo("Server.MapPath("." & "/temp/"").GetFiles()

For i As Integer = 0 To file.Length - 1
My.Computer.FileSystem.DeleteFile(file(i).FullName)
Next



解答:



親愛的讀者您好,很感謝您對於章立民研究室的支持,有關於您提到的問題,回覆如下:

由您的程式碼來推斷,您可能是想要刪除 ASP.NET 應用程式目錄下之 temp 子目錄內含的所有檔案(不包含 temp 子目錄本身)。此時,可以使用 My.Computer.FileSystem.GetFiles 方法,來取得該目錄中檔案的字串集合。接著藉由 For … Each 迴圈並搭配使用 My.Computer.FileSystem.DeleteFile 方法,即可刪除該目錄中的每一個檔案。如下所示即是一例:

Dim strPath As String = Server.MapPath("./temp/")
Dim strFiles As _
System.Collections.ObjectModel.ReadOnlyCollection(Of String)
Try
' 刪除檔案。
strFiles = My.Computer.FileSystem.GetFiles(strPath)
For Each foundFile As String In strFiles
My.Computer.FileSystem.DeleteFile(foundFile)
Next
Catch ex As Exception
' 撰寫您所要的錯誤處理程式。
End Try

但由您發問的問題主題來看,似乎是希望刪除位於應用程式中的 temp 這個目錄。這時候只需叫用 My.Computer.FileSystem.DeleteDirectory 方法,便可一次刪除特定的目錄,如下所示即是一列:

Dim strPath As String = Server.MapPath("./temp/")
Try
' 刪除該目錄。
My.Computer.FileSystem.DeleteDirectory(strPath, _
FileIO.DeleteDirectoryOption.DeleteAllContents)
Catch ex As Exception
' 撰寫您所要的錯誤處理程式。
End Try

請特別注意,叫用 My.Computer.FileSystem.DeleteDirectory 方法時,至少需要傳入兩個參數。以本例而言,第一個參數是所欲刪除的目錄,第二個參數是指定如果要刪除的目錄包含檔案或子目錄時,應該連同此目錄的內含的檔案或子目錄一併刪除。

假如,您希望透過 For ... To ... Next 迴圈來刪除 ASP.NET 應用程式目錄下之 temp 子目錄內的所有檔案。使用 System.IO.File.Delete 方法似乎是比較好的作法。值得注意的是,ASP.NET 不允許我們直接刪除一個非空的目錄,亦即該目錄中,不能再內含其他檔案或子目錄。如果所欲刪除之目錄尚存在其他檔案或子目錄時,將會觸發“System.IO.IOException: 目錄不是空的”錯誤訊息。因此在刪除某個目錄之前,必須先檢查該目錄是否存有其他檔案或子目錄,如果存在其他檔案或子目錄時,必須要先將他們刪除,最後再刪除我們所先前指定的目錄。

為了方便刪除目錄作業的進行,我們撰寫了一個DeleteADirectory函式,用來刪除某個目錄,以便於其中再次呼叫該函式(亦即透過遞回呼叫的技巧),來刪除該目錄中的其他子目錄:

Private Function DeleteADirectory( _
ByVal strPath As String) As Boolean
Dim strTemp() As String
Dim intCtrl As Integer
Try
' 刪除檔案。
strTemp = _
System.IO.Directory.GetFiles(strPath)
For intCtrl = 0 To UBound(strTemp)
System.IO.File.Delete(strTemp(intCtrl))
Next
' 刪除子目錄。
strTemp = _
System.IO.Directory.GetDirectories(strPath)
For intCtrl = 0 To UBound(strTemp)
DeleteADirectory(strTemp(intCtrl))
Next
' 刪除該目錄。
System.IO.Directory.Delete(strPath)
Return True
Catch ex As Exception
Return False
End Try
End Function

如圖表1所示,是我們在「方案總管」中所看到的專案目錄架構。接著,我們使用上述三種方式分別刪除 ASP.NET 應用程式目錄下之 temp1 目錄內的所有檔案、刪除 temp2 目錄與其內含的檔案或子目錄、刪除 temp3 目錄與其內含的檔案或子目錄(其執行畫面與結果如圖表2所示)。

最後,提醒大家,欲讓 ASP.NET 成功刪除某個目錄(與其內含的檔案、子目錄),請確認已經使用檔案總管給予該目錄 ASPNET 這個本機之機器帳號(Machine Account)適當的權限。如圖表3、圖表4、圖表5所示,考慮系統安全,避免權限擴張,我們在正式上線運作的環境,不會給予 ASPNET 本機機器帳號「完全控制」的權限,但請至少賦予 ASPNET 對該特定目錄「修改」的權限,以便順利刪除特定目錄(與其內含的檔案、子目錄)。


圖表1


圖表2


圖表3


圖表4


圖表5


章立民研究室 2007/5/1