程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 清理0字節文件和文件夾,清理0字節

清理0字節文件和文件夾,清理0字節

編輯:C#入門知識

清理0字節文件和文件夾,清理0字節


  最近突然感覺到個人的開發機各種慢,也是啊,從我上大學時起至今,這台老古董跟了我七年多了,還好每年我會親手給它做一兩次的清理和養護,所以它現在依然可以玩命的為我工作。如果我沒記錯,距離我上一次做系統有兩年多了,查看了一下磁盤的情況,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-7C6D
D:\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.settings


C:\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); stack.Push(item); } } } while (stack.Count > 0) { string curPath = stack.Pop(); try { Directory.Delete(curPath); Console.WriteLine("delete folder : " + curPath); } catch (Exception ex) { Console.WriteLine(ex); } } Console.WriteLine("清理完畢!!!"); Console.ReadKey(); } } public class Class3 { public Class3(string[] args) { if (args.Length == 0) { args = new string[] { AppDomain.CurrentDomain.BaseDirectory }; } foreach (var item in args) Delete(item); Console.WriteLine("清理完畢!!!"); Console.ReadKey(); } public void Delete(string path) { string[] files = null; try { files = Directory.GetFiles(path); } 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(path); } catch { } if (folders != null && folders.Length > 0) foreach (var item in folders) Delete(item); try { Directory.Delete(path); Console.WriteLine("delete folder : " + path); } catch (Exception ex) { Console.WriteLine(ex); } } } } 小代碼

 

 

  想用拿去編譯一下就好,想清理哪個磁盤或者文件夾,只需把生成程序copy過去run就好,當然也可以加參數指定路徑。例如寫個1.cmd文件,在裡面寫入

call  ..\這裡寫生成程序父路徑\生成程序.exe   "c:\"   "D:\flash cs6完全自學教程"  "E:\Erlang項目"   ,

然後運行下1.cmd(別怪小弟太啰嗦)。

 

現在話題又扯回來了,剛剛我不是還說,很多系統清理工具,為了系統的穩定性,不會刪除非“花名冊”中的0字符文件和文件夾,我現在這麼搞,系統穩定性不是大受威脅嗎?

告訴你,如果你用的是個人計算機,盡管刪吧,很多健壯性很好的系統程序都有文件自恢復能力(這一點在開發中很重要,配置文件被誤刪,或者是無法被程序識別,程序要有文件自恢復能力),不怕啦。但是這種方式絕對不允許用來清理正在運行服務器,除非你覺得脖子夠粗,頭掉不下來。

 


 

3.執行磁盤碎片整理

  這個就簡單了,我喜歡使用defraggler,執行速度非常快,應該和ccleaner出自同一家族;當然也可以使用系統自帶的磁盤整理工具,但是有點偏耗時;如果文件比較大,對連續性要求比較高的話,可以使用壓縮文件的方式。

 


 

 

 

      最終,通過刪除、移動、合並方式。終於把C盤整理出10G剩余空間,其他盤也做了重復文件處理(重復文件處理比較簡單,我這邊是讀取磁盤所有文件,將 文件創建時間和文件大小連接 並 文件路徑,作為key-value插入哈希表,下次遇到重復鍵的,對比下文件特征(當文件創建時間和文件大小相等,從兩個文件中隨機取同位符,匹配是否相等,用來斷定是否同一個文件),是同一個文件刪除重復)。


0字節文件夾怎刪除?

完美卸載V2006(完美優化專家2006)
-------------------------------
系統維護的瑞士軍刀,物美價廉的超級體驗!

主要功能:
1. 安裝監視: 監視軟件一舉一動,生成准確卸載記錄。
2. 智能卸載: 徹底干淨的卸載各類頑固軟件。
3. 卸載維護: 維護安裝軟件清單,2種方式快速卸載軟件。
4. 垃圾清理: 清除90多種垃圾文件及70多種常用軟件垃圾。
5. 閃電清理: 瞬間清理常見垃圾,嵌入IE清除上網痕跡。
6. 快捷清除: 清除隱匿的快捷方式及桌面與開始菜單垃圾。
7. 高級清理: 對注冊表的重要數據進行維護和清理。
8. DLL 清理: 清除冗余DLL鏈接庫,節省磁盤大量空間。
9. 系統修復: 快速安全系統錯誤修復,修復插件在線升級。
10.優化大師: 數百條優化規,智能向導式優化,更適於菜鳥。
11.文件加密: 文件保險箱及文件加密確保私人文件安全。
12.磁盤修復: 掃描並修復磁盤表、文件分配情及目錄錯誤。
13.驅動管理: 制作驅動安裝包,重裝系統一次性智能恢復。
14.黃金內存: 極品的內存優化工具,可同時優化服務,開機啟動。
15.漏洞掃描: 電腦的安全體檢,找出各類漏洞並予以修復。
16.病毒查殺: 查殺流行木馬|病毒|蠕蟲|間諜軟件|廣告程序|惡意代碼。
17.系統保護: 安全防毒牆,領先的未知病毒警報及內核監控技術。
18.網絡安全: 專業的天盾網絡防火牆,防黑的一流助手。
19.信息檢測: 計算機硬件檢測工具,全面了解系統信息。
20.文件偽裝: 文件夾魔術般的偽裝,隱藏,鎖定,保護個人隱私。
 

C盤裡windows文件夾裡可以不可以刪除一些0字節的文件夾與文件?

Windows操作系統在C盤空間不足的情況下,我們可以通過那些具體手段來增加C盤空間。

1.打開“我的電腦”-“工具”-“文件夾選項”-“查看”-在“顯示所有文件和文件夾”選項前打勾-“確定”

2.刪除以下文件夾中的內容:

x:\Documents and Settings\用戶名\Cookies\下的所有文件(保留index文件)

x:\Documents and Settings\用戶名\Local Settings\Temp\下的所有文件(用戶臨時文件)

x:\Documents and Settings\用戶名\LocalSettings\TemporaryInternet Files\下的所有文件(頁面文件)

x:\Documents and Settings\用戶名\Local Settings\History\下的所有文件(歷史紀錄)

x:\Documents and Settings\用戶名\Recent\下的所有文件(最近浏覽文件的快捷方式)

x:\WINDOWS\Temp\下的所有文件(臨時文件)

x:\WINDOWS\ServicePackFiles(升級sp1或sp2後的備份文件)

x:\WINDOWS\Driver Cache\i386下的壓縮文件(驅動程序的備份文件)

x:\WINDOWS\SoftwareDistribution\download下的所有文件

3.如果對系統進行過windoes updade升級,則刪除以下文件:

x:\windows\下以 $u... 開頭的隱藏文件

4.然後對磁盤進行碎片整理,整理過程中請退出一切正在運行的程序

5.碎片整理後打開“開始”-“程序”-“附件”-“系統工具”-“系統還原”-“創建一個還原點”(最好以當時的日期作為還原點的名字)

6.打開“我的電腦”-右鍵點系統盤-“屬性”-“磁盤清理”-“其他選項”-單擊系統還原一欄裡的“清理”-選擇“是”-ok了

7、在各種軟硬件安裝妥當之後,其實XP需要更新文件的時候就很少了。刪除系統備份文件吧:開始→運行→sfc.exe /purgecache近3xxM。(該命令的作用是立即清除"Windows 文件保護"文件高速緩存,釋放出其所占據的空間)

8、刪掉\windows\system32\dllcache下dll檔(減去200——300mb),這是備用的dll檔, 只要你已拷貝了安裝文件,完全可以這樣做。

9、XP會自動備份硬件的驅動程序,但在硬件的驅動安裝正確後,一般變動硬件的可能性不大,所以也可以考慮將這個備份刪除,文件位於\windows\driver cache\i386目錄下,名稱為driver.cab,你直接將它刪除就可以了,通常這個文件是74M。

10、刪除不用的輸入法:對很多網友來說,Windows XPt系統自帶的輸入法並不全部都合適自己的使用,比如IMJP8_1 日文輸入法、IMKR6_1 韓文輸入法......余下全文>>
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved