我有以下代码检查临时文件夹文件大小和另一个删除它们的代码:
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小时前创建的大小或删除文件。
我在stackoverflow上找到了很多答案但是在java,php ......
答案 0 :(得分:3)
您可以在FileInfo类中使用CreationTime属性来获取创建时间。如果该时间小于DateTime.Now.AddDays(-1),则可以使用System.IO.File.Delete删除该文件。要删除该文件,您当然需要具有所需的权限。您可以阅读有关删除操作here
的更多信息但是,您发送的代码似乎已被破坏。它将所有文件长度添加到文本框中,如" 102410241024"对于长度为1024字节的三个文件。你可以使用类似的东西。
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块进行文件删除也是个好主意。
答案 1 :(得分:0)
另一方面,您可以使用LINQ
。 LINQ
为您提供干净且易于理解的代码。
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())