ASP.NET設計網頁硬碟之資料夾實現
作者:Eve Cole
更新時間:2009-06-30 15:39:42
在介紹「網路硬碟」概念時已經提到,每個使用者在「網路硬碟」上都有自己的一塊空間。在下面程式設計中是這樣處理的:為使用者提供一個固定的資料夾,在這個資料夾下使用者可以自行增加/刪除新的資料夾或檔案。如圖1所示,首次開啟網頁時將列出該資料夾下的所有內容(包括文件和資料夾)。如果想要進入下一層資料夾,可以選取該資料夾,按一下「開啟」按鈕進入。以下將就檢視資料夾內容功能的實作分步驟進行說明。
圖1 使用者主介面 |
1. 頁面加載
由於程式所提供的使用者目錄是固定的,如c:UserDir,而且要求在頁面載入後顯示該資料夾所有內容,所以需要在Page_Load中進行相應操作:首先要判斷該資料夾是否存在,如果不存在需要先建立它;然後再列出該資料夾下的內容,其程式碼實作如下:
private void Page_Load(object sender, System.EventArgs e) { // 在此處放置使用者程式碼以初始化頁面
if(Page.IsPostBack==false) { CurrentPath= @"c:UserDir"; //設定目前目錄if(Directory.Exists(@"c:UserDir")==false) //若該目錄不存在,建立該目錄Directory.CreateDirectory( @"c:UserDir"); LoadDir(CurrentPath); //初始化裝入目錄} }
|
LoadDir(string FullPath)方法用來列出該資料夾下的所有內容,其程式碼如下:
private void LoadDir(string FullPath) { CurrentPath=FullPath; ArrayList values = new ArrayList(); string [] MyFiles,MyDirs; MyFiles = Directory.GetFiles(FullPath); //取得該目錄下所有檔案if(CurrentPath!=@"c:UserDir") //若不是頂層目錄,增加「返回上級目錄」選項{ values.Add("返回上級目錄"); }
values.AddRange(MyFiles); //加入檔案MyDirs= Directory.GetDirectories(FullPath); //取得該目錄下所有目錄values.AddRange(MyDirs); //加入目錄FileList.DataSource=values; //設定資料來源FileList.DataBind(); //綁定數據 } |
首先要定義一個ArrayList數組物件values,用以存放頂級目錄下的所有內容(包括資料夾名稱和檔案名稱)。 Directory.GetFiles()方法傳回頂層目錄下的所有檔案名,其傳回類型為一個string數組,故需要定義一個string類別物件MyFiles來保存傳回的檔案名稱;Directory.GetDirectories()傳回頂層目錄下的所有文件夾名稱,同樣定義一個string數組物件MyDirs來保存它們。完成這些後就可以把MyFiles和MyDirs數組加進values物件了。最後要做的只是為ListBox控制項物件FileList新增資料來源和綁定資料。有一點需要說明:如果目前目錄不是頂級目錄,則需要能返回上級目錄,為此需要在FileList中新增「返回上級目錄」選項。
2. 多級目錄查看
透過上一部分列出的兩段程式碼,就可以完成在頁面載入時列出頂級目錄下的所有內容。當然列出頂級目錄下的內容還是不夠的,和Windows作業系統類似,網路硬碟中資料夾目錄也是嵌套的,存在二級或多級資料夾目錄。為此要進行一些相應的處理,使得使用者可以查看多層資料夾目錄內容。前面介面設計中提供了一個「開啟」按鈕,使用者選擇對應的資料夾後,點選該按鈕即可查看該資料夾下的內容。
下面就為「開啟」按鈕新增程式碼。在「設計」面板中雙擊該按鈕,系統就會自動為其新增事件,其程式碼內容如下:
private void btnOpen_Click(object sender, System.EventArgs e) { if(FileList.SelectedItem.Text=="返回上級目錄") //返回上級目錄{ string ParentPath=Directory.GetParent(CurrentPath).ToString(); LoadDir(ParentPath); return; } else //開啟目錄{ LoadDir(FileList.SelectedItem.Text); } } |
程式首先判斷使用者選取的是不是「返回上級目錄」。如果是的話,則要先透過Directory.GetParent()方法返回上級資料夾名稱,然後再呼叫LoadDir()方法來顯示該目錄下的內容;如果使用者選取的不是「返回上級目錄」而是一個資料夾名稱,則可以直接呼叫LoadDir()方法,FileList.SelectedItem.Text為選取的資料夾名,用來作為LoadDir()方法的參數。