国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

初識IO流之小型資源管理器

2019-11-14 15:55:25
字體:
來源:轉載
供稿:網友

初次接觸到IO流,根據書本上的知識,加上自己的摸索,發現了一些好玩的事情.(書本上的知識或多或少,有時候不足以解決我們的問題!這時候我們就應該自己去求解!!!

所以我們學習的時候要抱有探索的精神,求知若渴是幫助我們獲取更多知識的一種積極的精神態度,需要保持)

小型資源管理器

該項目主要是為了加載電腦磁盤中存在的所有文件夾和文件(directory,file)

這時候我遇到了第一個問題:書本上只有將指定的磁盤設為根節點,在窗體TreeView中添加該磁盤中的文件夾

(我去,那如果我的電腦上分了幾十個磁盤分區,那我不得全指定了?我覺得微軟肯定不會這么二,肯定有關于所有磁盤的類.

Disk是磁盤的意思,我就試了試,結果 = = 沒有這個類,你妹的,我只好慢慢來)

然后就有了

 

 1         PRivate void GetDirectoryInDisk() 2         { 3             DriveInfo[] allDisk = System.IO.DriveInfo.GetDrives(); 4             foreach (DriveInfo item in allDisk) 5             { 6                  7                     TreeNode treeNode = new TreeNode(); 8                     treeNode.Text = item.Name; 9                     treeNode.Tag = item;10                     tvAllDirectoryInfo.Nodes.Add(treeNode);11                     DirectoryInfo directory = item.RootDirectory;12                     //獲取驅動器下所有的文件夾信息13                     DirectoryInfo[] allDirectory = directory.GetDirectories();14                     foreach (DirectoryInfo dir in allDirectory)15                     {16                         TreeNode subTreeNode = new TreeNode();17                         subTreeNode.Text = dir.Name;18                         subTreeNode.Tag = dir;19                         treeNode.Nodes.Add(subTreeNode);20                     }21                 22             }23         }
所有磁盤為根節點

 

結果華麗麗的爆了個這么個錯誤

(當時就有種去你妹的沖動,靜下心來有發現了磁盤類型)

 1     // 摘要: 2     //     定義驅動器類型常數,包括 CDRom、Fixed、Network、NoRootDirectory、Ram、Removable 和 Unknown。 3     [Serializable] 4     [ComVisible(true)] 5     public enum DriveType 6     { 7         // 摘要: 8         //     驅動器類型未知。 9         Unknown = 0,10         //11         // 摘要:12         //     此驅動器沒有根目錄。13         NoRootDirectory = 1,14         //15         // 摘要:16         //     此驅動器是一個可移動存儲設備,如軟盤驅動器或 USB 閃存驅動器。17         Removable = 2,18         //19         // 摘要:20         //     此驅動器是一個固定磁盤。21         Fixed = 3,22         //23         // 摘要:24         //     此驅動器是一個網絡驅動器。25         Network = 4,26         //27         // 摘要:28         //     此驅動器是一個光盤設備,如 CD 或 DVD-ROM。29         CDRom = 5,30         //31         // 摘要:32         //     此驅動器是一個 RAM 磁盤。33         Ram = 6,34     }
磁盤類型

我就增加了一道判斷解決了這個問題(學校的一個磁盤是虛擬光驅,產生了設備未就緒的問題)

 1             foreach (DriveInfo item in allDisk) 2             { 3                 if (item.DriveType == DriveType.Fixed) 4                 { 5                     TreeNode treeNode = new TreeNode(); 6                     treeNode.Text = item.Name; 7                     treeNode.Tag = item; 8                     tvAllDirectoryInfo.Nodes.Add(treeNode); 9                     DirectoryInfo directory = item.RootDirectory;10                     //獲取驅動器下所有的文件夾信息11                     DirectoryInfo[] allDirectory = directory.GetDirectories();12                     foreach (DirectoryInfo dir in allDirectory)13                     {14                         TreeNode subTreeNode = new TreeNode();15                         subTreeNode.Text = dir.Name;16                         subTreeNode.Tag = dir;17                         treeNode.Nodes.Add(subTreeNode);18                     }19                 }20             }
修改

接下來就是文件或文件夾的復制問題了.(右鍵菜單添加復制和刪除)

文件夾是沒辦法跨磁盤移動的,如果要移動只能在同一驅動器下!

 1         private void CopyDirectory(string srcdir, string desdir) 2         { 3             string folderName = srcdir.Substring(srcdir.LastIndexOf("//") + 1); 4  5             string desfolderdir = desdir + "//" + folderName; 6  7             if (desdir.LastIndexOf("//") == (desdir.Length - 1)) 8             { 9                 desfolderdir = desdir + folderName;10             }11             string[] filenames = Directory.GetFileSystemEntries(srcdir);12 13             foreach (string file in filenames)// 遍歷所有的文件和目錄14             {15                 if (Directory.Exists(file))// 先當作目錄處理如果存在這個目錄就遞歸Copy該目錄下面的文件16                 {17 18                     string currentdir = desfolderdir + "//" + file.Substring(file.LastIndexOf("//") + 1);19                     if (!Directory.Exists(currentdir))20                     {21                         Directory.CreateDirectory(currentdir);22                     }23 24                     CopyDirectory(file, desfolderdir);25                 }26 27                 else // 否則直接copy文件28                 {29                     string srcfileName = file.Substring(file.LastIndexOf("//") + 1);30 31                     srcfileName = desfolderdir + "//" + srcfileName;32 33 34                     if (!Directory.Exists(desfolderdir))35                     {36                         Directory.CreateDirectory(desfolderdir);37                     }38 39 40                     File.Copy(file, srcfileName);41                 }42             }//foreach 43         }
文件或文件夾復制

使用遞歸操作.

這個小項目到這里就告一段落了,要學習的東西還有很多,繼續努力.

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延长县| 敦化市| 无锡市| 辽中县| 昔阳县| 彭阳县| 新田县| 通渭县| 芷江| 黑龙江省| 平遥县| 金塔县| 凌云县| 儋州市| 镇平县| 通州区| 博兴县| 鸡东县| 刚察县| 桂阳县| 宜良县| 饶河县| 伊川县| 扶风县| 建平县| 贞丰县| 阿合奇县| 安图县| 卢湾区| 宝丰县| 敦化市| 灵石县| 潞城市| 晋州市| 观塘区| 塔河县| 富平县| 长岭县| 平南县| 尉犁县| 明水县|