删除旧(24小时)以前的VB.NET?

时间:2015-10-14 13:05:08

标签: vb.net file time delete-file

我有以下代码检查临时文件夹文件大小和另一个删除它们的代码:

    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 ......

2 个答案:

答案 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)

另一方面,您可以使用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())