最近突然感覺到個人的開發機各種慢,也是啊,從我上大學時起至今,這臺老古董跟了我七年多了,還好每年我會親手給它做一兩次的清理和養護,所以它現在依然可以玩命的為我工作。如果我沒記錯,距離我上一次做系統有兩年多了,查看了一下磁盤的情況,window 2003系統 ,系統盤占了45G(滿50G,這個里面還包括4G的虛擬內存),其他硬盤上也堆積了各種文件夾和文件,o(︶︿︶)o 唉,刪了吧,不舍得,要么是自己做的,要么是辛苦弄來的;不刪吧,那就是一堆雜亂無章的垃圾。要怎么辦?
給自己先立下這么個規矩
1.文件夾深度不能超過5
2.不保留0字節文件和文件夾
3.執行磁盤碎片整理(文件壓縮也是把散碎文重組的一個好方式,然后再解壓縮,不懂的就當我是在胡咧咧吧)
究竟這幾步應該如何快速做到呢?
1.文件夾深度不能超過5
cmd 命令有一個 tree , 儂曉得伐?
C:/Users/Administrator>tree "D:/Moontest/Moontest/刪除0大小文件和空文件夾" /f文件夾 PATH 列表卷序列號為 A043-7C6DD:/MOONTEST/MOONTEST/刪除0大小文件和空文件夾│ PRogram.cs│ 刪除0大小文件和空文件夾.csproj│├─bin│ ├─Debug│ │ 刪除0大小文件和空文件夾.exe│ │ 刪除0大小文件和空文件夾.pdb│ │ 刪除0大小文件和空文件夾.vshost.exe│ │ 刪除0大小文件和空文件夾.vshost.exe.manifest│ ││ └─Release├─Controls│ MyButton.cs│├─obj│ └─x86│ └─Debug│ │ 1111.csproj.FileListAbsolute.txt│ │ 2048.csproj.FileListAbsolute.txt│ │ DesignTimeResolveAssemblyReferences.cache│ │ DesignTimeResolveAssemblyReferencesInput.cache│ │ GenerateResource.read.1.tlog│ │ GenerateResource.write.1.tlog│ │ ResolveAssemblyReference.cache│ │ 刪除0大小文件和空文件夾.csproj.FileListAbsolute.txt│ │ 刪除0大小文件和空文件夾.exe│ │ 刪除0大小文件和空文件夾.Properties.Resources.resources│ ││ └─TempPE│ Properties.Resources.Designer.cs.dll│└─Properties AssemblyInfo.cs Resources.Designer.cs Resources.resx Settings.Designer.cs Settings.settingsC:/Users/Administrator>
這個層次分明了,如果實在太多,可以輸入在命令后加上>> d:/result.txt 即是
tree "D:/Moontest/Moontest/刪除0大小文件和空文件夾" /f>> d:/result.txt
這種方式把結果導出到一個文件中查看。如果深度太大的,可以手動處理下,這個盡量不要寫代碼自動化處理,畢竟你不能把你的思維寫到計算機里面,文件或刪或合并或移位,還是人工的好點,當然我說的是對自己有價值有感情的東西,畢竟某些東西視同己出。
2.不保留0字節文件和文件夾
這個不管我們采用什么樣的系統清理工具,清理工具考慮系統穩定性,一般不會刪除不在“花名冊”中的0字符文件和文件夾。這樣就可能導致我們曾經在安裝刪除時,系統中保留了大量的卸載后余下的垃圾文件(0字符文件和文件夾),久而久之,看到一堆堆我不認識的東西,心里特別不爽,看到一個,干掉一個;但是這種方式也太慢了。要怎么辦呢?自己寫個清理方法吧,呵呵。
我自己提供一下刪除0字符文件和文件夾的小代碼,比較簡單,不解釋代碼了,分成三段,根據喜好索取,我個人偏好Class2

using System;using System.Collections.Generic;using System.IO;namespace 刪除0大小文件和空文件夾{ class Program { /* Class1 和 Class2 的形式是一樣的,只是刪除方式不一樣 Class2 和 Class3 的刪除方式是一樣的,只是形式不一樣 Class1 先檢索出所有文件夾,從末端文件夾開始刪除0字節文件和文件夾 Class2 和 Class3 檢查一個文件夾,先刪除0字節文件,然后檢索文件夾,重復以上過程,最后從末端文件夾開始刪除文件夾 */ static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += (s, e) => { File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "error.log", DateTime.Now.ToString() + "/t" + e.ExceptionObject.ToString() + Environment.NewLine); }; Class1 c1 = new Class1(args); Class2 c2 = new Class2(args); Class3 c3 = new Class3(args); } } public class Class1 { public Class1(string[] args) { Queue<string> queue = new Queue<string>(); Stack<string> stack = new Stack<string>(); if (args.Length > 0) { foreach (var item in args) { queue.Enqueue(item); stack.Push(item); } } else { string rootPath = AppDomain.CurrentDomain.BaseDirectory; queue.Enqueue(rootPath); stack.Push(rootPath); } while (queue.Count > 0) { string curPath = queue.Dequeue(); string[] folders = null; try { folders = Directory.GetDirectories(curPath); } catch { } if (folders != null && folders.Length > 0) { foreach (var item in folders) { queue.Enqueue(item); stack.Push(item); } } } while (stack.Count > 0) { string curPath = stack.Pop(); string[] files = null; try { files = Directory.GetFiles(curPath); } catch { } int filecount = 0; if (files != null && files.Length > 0) { filecount = files.Length; foreach (var item in files) { FileInfo finfo = new FileInfo(item); if (finfo.Length <= 0) { try { finfo.Delete(); filecount--; Console.WriteLine("delete file : " + finfo.FullName); } catch (Exception ex) { Console.WriteLine(ex); } } } } if (filecount == 0) { try { Directory.Delete(curPath); Console.WriteLine("delete folder : " + curPath); } catch (Exception ex) { Console.WriteLine(ex); } } } Console.WriteLine("清理完畢!!!"); Console.ReadKey(); } } public class Class2 { public Class2(string[] args) { Queue<string> queue = new Queue<string>(); Stack<string> stack = new Stack<string>(); if (args.Length > 0) { foreach (var item in args) { queue.Enqueue(item); stack.Push(item); } } else { string rootPath = AppDomain.CurrentDomain.BaseDirectory; queue.Enqueue(rootPath); stack.Push(rootPath); } while (queue.Count > 0) { string curPath = queue.Dequeue(); string[] files = null; try { files = Directory.GetFiles(curPath); } catch { } if (files != null && files.Length > 0) { foreach (var item in files) { FileInfo finfo = new FileInfo(item); if (finfo.Length <= 0) { try { finfo.Delete(); Console.WriteLine("delete file : " + finfo.FullName); } catch (Exception ex) { Console.WriteLine(ex); } } } } string[] folders = null; try { folders = Directory.GetDirectories(curPath); } catch { } if (folders != null && folders.Length > 0) { foreach (var item in folders) { queue.Enqueue(item);
新聞熱點
疑難解答