2012-07-11 51 views
0

如何找到空目錄中的所有空文件。給定的文件可能有回車符或空格。我也需要捕捉這些。我可以在PowerShell或C#中使用代碼。如何查找所有空文件遞歸

+2

那麼,從(發佈)代碼開始遞歸搜索。然後考慮如何過濾結果...... – 2012-07-11 21:27:52

+0

只需枚舉目錄中的所有文件(可能是遞歸的),然後在每個文件上使用'System.IO.FileInfo'並檢查長度。 – 2012-07-11 21:28:49

回答

2

的System.IO有類你想

DirectoryInfo di = new DirectoryInfo("c:\\Luke101"); 
    FileInfo[] fiArr = di.GetFiles(); 

    foreach (FileInfo fi in fiArr) 
    { 
     if(fi.Length == 0) 
     { 
      //.. Then do stuff 
     } 
    } 
+0

不遞歸,不會匹配「空白」文件,但它是一個開始.. – 2012-07-11 21:34:52

+0

@pst op的問題是「空目錄中的空文件」,因此遞歸不需要op – HatSoft 2012-07-11 21:38:49

+0

通常不匹配標題I假設..也「給定的文件可能有回車符或空格。」雖然。 – 2012-07-11 22:10:02

2
var files = new DirectoryInfo("Your path").GetFiles("*.*", SearchOption.AllDirectories); 
foreach(var file in files) 
{ 
    using(var r = new StreamReader(file.OpenRead())) 
    { 
     string content = r.ReadToEnd(); 
     if(string.IsnullOrWhitespace(content)) 
     { 
     // do stuff 
     } 
    } 
} 

代碼是從我的過頂,沒有測試,由你可以得到的想法。

+0

Downvoted,因爲您正在創建和打開的StreamReader有點嚇人。它不僅會在檢查文件的長度之前將文件的全部內容加載到內存中(最好是笨重的,最糟糕的是危險的),但它永遠不會被明確處理,這意味着釋放資源的地點/時間是不確定的。翻譯:打開的文件很容易變成內存泄漏... – 2012-07-11 21:48:53

+0

編輯,謝謝。我只是傾向於吐出一行,因爲stakoverflow的帖子編輯器在縮進時很糟糕(我希望我的製表符工作,該死!)。 – Dmitriy 2012-07-11 21:52:10

+0

爲了完全酷,最好是逐行讀取文件,並在非空格符號存在時停止。這會更有成效。但是歐普的要求更像是一個家庭作業,所以我並不在乎。 – Dmitriy 2012-07-11 21:54:06

3

Powershell的很容易:

Get-ChildItem -Path C:\dir -recurse -Filter { $_.Length -eq 0 }

#YOUR HOMEWORK: filter for your CRLF criteria as well

+0

當問題詢問空文件時,應添加-File標誌。 – rigel 2017-07-07 04:13:31

0

找一個只有空格,製表符全零字節長度的文件或文件,CR從文件到結束的開始。

Get-ChildItem <path> -Recurse | 
Where-Object {!$_.PSIsContainer -and ($_.Length -eq 0 -or ([IO.File]::ReadAllText($_.FullName) -match '^\s+$') } 
相關問題