閱讀719 返回首頁    go 阿裏雲 go 技術社區[雲棲]


ASP.NET設計網絡硬盤之文件夾實現

在介紹“網絡硬盤”概念時已經提到,每個用戶在“網絡硬盤”上都有自己的一塊空間。在下麵程序設計中是這樣處理的:為用戶提供一個固定的文件夾,在這個文件夾下用戶可以自己增加/刪除新的文件夾或文件。如圖1所示,首次打開網頁時將列出該文件夾下的所有內容(包括文件和文件夾)。如果想進入下一級文件夾,可以選中該文件夾,單擊“打開”按鈕進入。下麵將就查看文件夾內容功能的實現分步驟進行說明。


圖1用戶主界麵
1.頁麵加載

由於程序所提供的用戶目錄是固定的,如c:/UserDir,而且要求在頁麵加載後顯示該文件夾所有內容,所以需要在Page_Load中進行相應操作:首先要判斷該文件夾是否存在,如果不存在需要先創建它;然後再列出該文件夾下的內容,其代碼實現如下:

privatevoidPage_Load(objectsender,System.EventArgse)
{
 //在此處放置用戶代碼以初始化頁麵

 if(Page.IsPostBack==false)
 {
CurrentPath=@"c:/UserDir/";//設置當前目錄
if(Directory.Exists(@"c:/UserDir/")==false)//若該目錄不存在,創建該目錄
 Directory.CreateDirectory(@"c:/UserDir/");
 LoadDir(CurrentPath);//初始化裝入目錄
 }
}


LoadDir(stringFullPath)方法用來列出該文件夾下的所有內容,其代碼如下:

privatevoidLoadDir(stringFullPath)
{
 CurrentPath=FullPath;
 ArrayListvalues=newArrayList();
 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操作係統類似,網絡硬盤中文件夾目錄也是嵌套的,存在二級或者多級文件夾目錄。為此要進行一些相應的處理,使得用戶可以查看多級文件夾目錄內容。前麵界麵設計中提供了一個“打開”按鈕,用戶選擇相應的文件夾後,單擊該按鈕就可以查看該文件夾下的內容。

下麵就為“打開”按鈕添加代碼。在“設計”麵板中雙擊該按鈕,係統就會自動為其添加事件,其代碼內容如下:

privatevoidbtnOpen_Click(objectsender,System.EventArgse)
{
 if(FileList.SelectedItem.Text=="返回上級目錄")//返回上級目錄
 {
stringParentPath=Directory.GetParent(CurrentPath).ToString();
LoadDir(ParentPath);
return;
 }
 else//打開目錄
 {
LoadDir(FileList.SelectedItem.Text);
 }
}
程序首先判斷用戶選中的是不是“返回上級目錄”。如果是的話,則要先通過Directory.GetParent()方法返回上級文件夾名稱,然後再調用LoadDir()方法來顯示該目錄下的內容;如果用戶選中的不是“返回上級目錄”而是一個文件夾名稱,則可以直接調用LoadDir()方法,FileList.SelectedItem.Text為選中的文件夾名,用來作為LoadDir()方法的參數。

最後更新:2017-04-02 00:06:36

  上一篇:go asp.net 對xml文件的讀寫,添加,修改,刪除操作
  下一篇:go datagrid與DataSet結合使用中出現的索引問題