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

屬性值

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

適用於