ZipArchiveEntry.LastWriteTime 属性

定义

获取或设置最近一次更改 zip 存档中的项的时间。

public:
 property DateTimeOffset LastWriteTime { DateTimeOffset get(); void set(DateTimeOffset value); };
public DateTimeOffset LastWriteTime { get; set; }
member this.LastWriteTime : DateTimeOffset with get, set
Public Property LastWriteTime As DateTimeOffset

属性值

最近一次更改 zip 存档中的项的时间。

例外

尝试设置此属性失败,因为该项的 zip 存档处于 Read 模式。

将存档模式设置为 Create

- 或 -

存档模式已设置为 Update ,并且已打开该项。

已尝试将此属性的值设置为早于 1980 年 1 月 1 日 0:00:00(午夜)或晚于 2107 年 12 月 31 日 23:59:58 (午夜的前一秒钟)。

注解

通过调用 CreateEntryFromFile 方法从现有文件创建新条目时, LastWriteTime 该项的 属性将自动设置为上次修改该文件时。 通过调用 CreateEntry 方法以编程方式创建新条目时, LastWriteTime 条目的 属性将自动设置为执行时间。 如果修改条目,如果希望值反映最新更改的时间,则必须显式设置 LastWriteTime 属性。

设置此属性时, DateTimeOffset 该值将转换为特定于 zip 存档的时间戳格式。 此格式支持两秒的分辨率。 允许的最早值为 1980 年 1 月 1 日 0:00:00 (午夜) 。 最新的允许值为 2107 年 12 月 31 日 23:59:58 (午夜前一秒) 。 如果上次写入时间的值无效,则 属性返回默认值 1980 年 1 月 1 日 0:00:00 (午夜) 。

示例

以下示例演示如何打开 zip 存档中的条目、对其进行修改,以及如何将 属性设置为 LastWriteTime 当前时间。

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\example\result.zip";

            using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
            {
                ZipArchiveEntry entry = archive.GetEntry("ExistingFile.txt");
                using (StreamWriter writer = new StreamWriter(entry.Open()))
                {
                    writer.BaseStream.Seek(0, SeekOrigin.End);
                    writer.WriteLine("append line to file");
                }
                entry.LastWriteTime = DateTimeOffset.UtcNow.LocalDateTime;
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim zipPath As String = "c:\example\result.zip"

        Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
            Dim entry As ZipArchiveEntry = archive.GetEntry("ExistingFile.txt")

            Using writer As StreamWriter = New StreamWriter(entry.Open())
                writer.BaseStream.Seek(0, SeekOrigin.End)
                writer.WriteLine("append line to file")
            End Using
            entry.LastWriteTime = DateTimeOffset.UtcNow.LocalDateTime
        End Using
    End Sub

End Module

适用于