2015-10-14 37 views
1

我有以下的代碼,檢查臨時文件夾的文件大小,另一個是刪除它們:刪除舊的(24小時)以前的VB.NET?

TemporaryFilesSize.Text = 0 
    For Each foundFile As String In My.Computer.FileSystem.GetFiles(_ 
     My.Computer.FileSystem.SpecialDirectories.Temp, _ 
     Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*") 

     Dim filesizeinbytes As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(foundFile) 

     TemporaryFilesSize.Text = TemporaryFilesSize.Text + filesizeinbytes.Length 
    Next 

'Changing From Bytes To Mb Gb ... 
Dim filesizeunit As String = "" 
    If TemporaryFilesSize.Text >= 1024 Then 
     filesizeunit = "Kb" 
     TemporaryFilesSize.Text = TemporaryFilesSize.Text/1024 
     If TemporaryFilesSize.Text >= 1024 Then 
      filesizeunit = "Mb" 
      TemporaryFilesSize.Text = TemporaryFilesSize.Text/1024 
      If TemporaryFilesSize.Text >= 1024 Then 
       filesizeunit = "Gb" 
       TemporaryFilesSize.Text = TemporaryFilesSize.Text/1024 
      Else 
      End If 
     Else 
     End If 
    Else 
     filesizeunit = "Bytes" 
    End If 
    Dim filesize As Double = TemporaryFilesSize.Text 
    filesize = Math.Round(filesize, 2) 
    TemporaryFilesSize.Text = filesize 
    TemporaryFilesSize.Text = TemporaryFilesSize.Text & filesizeunit 

有沒有辦法讓我的代碼得到的大小或刪除創建更24小時之前文件。

我已經找到了計算器,但在Java,PHP和許多答案...

+0

的[FileInfo的](https://msdn.microsoft.com/en-us/library/system.io.fileinfo(V = vs.110)的.aspx)類有你需要的信息。 –

回答

3

可以使用CREATIONTIME財產FileInfo類獲得創建時間。如果時間小於DateTime.Now.AddDays(-1),那麼你可以使用System.IO.File.Delete刪除文件。要刪除文件,您需要擁有必要的權限。你可以閱讀更多的刪除操作here

但是您發送代碼似乎被打破。它爲文件長度1024字節的文件添加所有文件長度,如「102410241024」。你可以使用類似的東西。

For Each foundFile As String In My.Computer.FileSystem.GetFiles(_ 
     My.Computer.FileSystem.SpecialDirectories.Temp, _ 
     Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*") 

     Dim filesizeinbytes As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(foundFile) 

     If filesizeinbytes.CreationTime < DateTime.Now.AddDays(-1) Then 
      System.IO.File.Delete(foundFile) 
     End If 
     TemporaryFilesSize.Text = TemporaryFilesSize.Text + filesizeinbytes.Length 
    Next 

此外,它將是一個好主意,使用try catch塊文件刪除。

+0

太棒了!代碼工作!什麼嘗試catch塊是? –

+0

,我覺得代碼對我來說工作得很好!它apears上temporaryfilessize 4.11GB對我造成filesizeinbytes是一張雙人牀和有沒有+&(用vb.net 2010) –

0

另一種方法,你可以使用LINQLINQ爲您提供乾淨易懂的代碼。這是在代碼中使用上述

 Dim di As New DirectoryInfo("yourDir") 
     Dim files = di.GetFiles() 

     files.AsParallel().Where(Function(f) f.CreationTime < DateTime.Now.AddDays(-1)).ForAll(Function(f) f.Delete())