ASP.NET設計網路硬碟之檔案夾實現

來源:互聯網
上載者:User

在介紹“網路硬碟”概念時已經提到,每個使用者在“網路硬碟”上都有自己的一塊空間。在下面程式設計中是這樣處理的:為使用者提供一個固定的檔案夾,在這個檔案夾下使用者可以自己增加/刪除新的檔案夾或檔案。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()方法的參數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.