0

ディレクトリ内の 7 日より古いファイルを圧縮し、同じ名前の圧縮ファイルを作成してから、既存のファイルを削除するコード サンプルを次に示します。この例では、.txt ファイルを使用しますが、これは適宜変更できます。

例えば

myfile1.txt ---> myfile1.zip ---> myfile1.txt を削除 myfile2.txt
---> myfile2.zip ---> myfile2.txt を削除

Dim NumDays As Integer = 7
Dim reportDbPath As String = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName() & "\report"
Dim fileEntries As String() = Directory.GetFiles(reportDbPath)
For Each fileName In fileEntries
    If Path.GetExtension(fileName) = ".txt" AndAlso Directory.GetCreationTime(fileName) < DateAdd(DateInterval.Day, -NumDays, Now()) Then
        Dim fi As New FileInfo(fileName)
        Dim archiveFileName As String = Path.GetFileNameWithoutExtension(fileName) & ".zip"
        Dim fsOut As FileStream = File.Create(Path.Combine(reportDbPath, archiveFileName))
        Dim zipStream As New ZipOutputStream(fsOut)
        zipStream.SetLevel(9)
        Dim newEntry As New ZipEntry(ZipEntry.CleanName(Path.GetFileName(fileName)))
        newEntry.DateTime = fi.LastWriteTime
        newEntry.Size = fi.Length
        zipStream.PutNextEntry(newEntry)
        Dim buffer As Byte() = New Byte(4095) {}
        Using streamReader As FileStream = File.OpenRead(fileName)
            StreamUtils.Copy(streamReader, zipStream, buffer)
        End Using
        zipStream.CloseEntry()
        zipStream.IsStreamOwner = True
        zipStream.Close()
        File.Delete(fileName)
    End If
Next fileName

それが役に立つことを願っています!

4

1 に答える 1