2013-07-09 60 views
-2

以Hilgreths的答案使代碼更好,但實際問題是變量數據類型,將字符串的類型更改爲bool以允許沒有數據的文件修復問題。C#,if file.length == 0 ignore

似乎無法在這裏或其他論壇上找到答案,只是想知道是否有辦法忽略長度爲0的文件。

我的程序正在通過DIR進行搜索並返回所有文件,然後我想通過目錄搜索並找到最近的文件,如果文件長度爲0我想跳到下一個文件,但系統保留崩潰,到目前爲止我的代碼看起來像

if(fileinfo.Length > 0) 
{ 
    GetLatestWritenFileFileInDirectory(directoryInfo, keywordEH, keywordINTER, keywordM&M); 
} 

else if(result.Length == 0) 
{ 

} 

此刻非常粗糙的,因爲我不是在尋找它爲我(顯然)絕對想知道如果我能以某種方式跳過空文件寫入不使用LINQ,因爲我使用框架1.0

謝謝

+1

爲什麼我們必須猜測這些變量是什麼?我們如何猜測結果是什麼?甚至是'fileInfo'。爲什麼我們不得不猜測你的代碼如何失敗。你剛纔說「系統不斷崩潰」。您收到錯誤訊息。傳下去! –

+0

可能重複的[C#找到最新的文件在目錄](http://stackoverflow.com/questions/1179970/c-sharp-find-most-recent-file-in-dir) – Damith

+0

@DavidHeffernan沒有包括細節沒有認爲他們很重要,因爲我正在尋找一種方法來使用if而不是最終結果來跳過空文件......給出的錯誤是Error:System.Reflection.TargetInvocationException:異常已被調用的目標拋出。 ---> Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException:分配給變量「User :: FileHasNoData」的值的類型與當前變量類型不同。變量在執行期間不能改變類型。變量類型是嚴格的,除了Object類型的變量。 – user2546071

回答

1

else if聲明中使用fileinfo.Length而不是result.Length

+0

改變了結果fileinfo.length,但只是想知道如何告訴它檢查dir中的下一個文件,試圖再次調用該函數在其他內,如果只是讓它崩潰 – user2546071

0

可以通過調用GetFilesSearchOption.AllDirectories

FileInfo[] allfiles = directoryInfo.GetFiles("*.*", SearchOption.AllDirectories); 

然後做得到的所有文件,如下

for (int i = 0; i < allfiles.Length; i++) 
{ 
    if (allfiles[0].Length > 0) 
    { 
     GetLatestWritenFileFileInDirectory(allfiles[0], keywordEH, keywordINTER, keywordM & M); 
    } 
} 
0

你應該做的

if(File.ReadAllText(yourfileName).Length == 0) 
     continue; 

,這應該是所有的。

0

我想如果語句,您可以刪除別人,因爲FileInfo.Length不能小於0

if(fileInfo.Length > 0) 
{ 
    ////Do your stuff with non empty files 
} 

這將是足夠的,除非你要處理與長度== 0,則該文件看起來你沒有。

+0

如果文件長度爲0我想繼續通過目錄搜索,以前嘗試按照你的建議,但仍然不會工作 – user2546071